728x90
let user = {
name: "John",
age: 30
};
user.sayHi = function() {
alert("안녕하세요!");
};
user.sayHi(); // 안녕하세요!
// 함수 선언
function sayHi() {
alert("안녕하세요!");
};
// 선언된 함수를 메서드로 등록
user.sayHi = sayHi;
객체는 메서드를 함수 만들듯이 생성할 수 있으며 . 연산자를 통해 사용할 수 있습니다.
함수를 생성 후 메서드로 등록해서 사용할 수도 있습니다.
객체 리터럴 안에 메서드를 생성할 경우 단축할 수 있으며 객체 상속에 따라 조금 차이가 존재합니다.
// 아래 두 객체는 동일하게 동작
user = {
sayHi: function() {
alert("Hello");
}
};
// 단축 구문
user = {
sayHi() { // "sayHi: function()"과 동일합니다.
alert("Hello");
}
};
this
메서드 내부에서 객체에 접근은 this 키워드를 사용하여 접근할 수 있습니다.
this가 아닌 객체이름을 통해 접근할 수도 있지만 객체가 변할 경우 문제가 발생할 수도 있습니다.
자바스크립트에서는 this는 모든 함수에 사용할 수 이있으며 런타임에 결정이 됩니다. 유연하게 사용할 수 잇지만 조심해서 사용해야합니다.
화살표 함수에서 this는 화살표 함수가 아닌 외부 함수에서 this의 값을 가져옵니다.
let user = {
firstName: "보라",
sayHi() {
let arrow = () => alert(this.firstName);
arrow();
}
};
user.sayHi(); // 보라
여기서는 arrow가 아닌 외부 sayHi의 this가 됩니다.
'학습(구) > JavaScript(구)' 카테고리의 다른 글
자바스크립트 - 옵셔널 체이닝 (0) | 2021.11.15 |
---|---|
자바스크립트 - new 연산자와 생성자 함수 (0) | 2021.11.09 |
자바스크립트 - 가비지 컬렉션 (0) | 2021.11.03 |
자바스크립트 - 객체 복사 (0) | 2021.11.03 |
자바스크립트 - 객체 (0) | 2021.11.02 |