메서드란?
- 객체(Object)의 프로퍼티(Property)에 할당된 함수를 메서드(Method)라고 한다.
- 메서드는 객체에 동적인 능력을 부여한다.
const person = {
name : '2DC',
age : 30,
sayHi : () => console.log('Hi!'),
}
person.sayHi();
- 위 코드를 통해 2DC라는 객체가 생성되었으며,
- 이 친구는 sayHi라는 메서드가 있고, 이 메서드를 통해 Hi 라는 인사를 할 수 있다.
메서드와 This
- 대부분의 메서드는 객체 프로퍼티의 값을 활용해서 역할을 한다.
- 이 때 this를 사용하면 메서드가 본인이 속한 객체의 내부 프로퍼티에 접근할 수 있게 된다.
const person = {
name : '2DC',
age : 30,
sayHi : () => console.log('Hi!'),
indroduce : function() {
return console.log((`hi my name is ${this.name} and i'm ${this.age} years old!`))
}
}
person.sayHi();
person.indroduce();
모든 함수에서 다 쓸 수 있는 This
- 자바스크립트에서는 모든 함수에 this를 쓸 수 있다.
- 아래와 같이 코드를 작성해도 오류가 나지 않는다.
function myName() {
return console.log(this.name);
}
- 또한 this의 값은 호출하는 컨텍스트 값에 따라 달라진다.
- 즉 연산에 따라 계속 바뀔 수 있다는 것이다.
function myName() {
return console.log(this.name);
}
const p1 = { name : '2DC' };
const p2 = { name : 'PJY' };
p1.sayName = myName;
p2.sayName = myName;
p1.sayName();
p2.sayName();
- 자바스크립트에서 this는 런타임에 결정된다.
메서드가 어디서 정의되었는지에는 상관없이 this는 점 앞의 객체가 무엇인가에 따라 자유롭게 결정된다.
요약
- 객체 프로퍼티에 저장된 함수를 메서드라고 한다.
- 메서드는 this로 객체를 참조한다.
- 함수 선언시 this 사용이 가능하다. 하지만 함수 호출 전까지 this에는 값이 할당되지 않는다.
- 함수를 복사하여 여러 객체에 메서드로써 전달이 가능하다.
- 함수를 객체 프로퍼티에 저장한 뒤 object.method()와 같이 호출하면 this는 object를 참조한다.
'Javascript' 카테고리의 다른 글
(JS) 실행컨텍스트 (0) | 2022.06.08 |
---|---|
(JS) 스코프 (0) | 2022.06.08 |
(JS) 화살표 함수 기초(함수 표현식의 간결화) (0) | 2022.06.02 |
(JS) 함수 선언식과 함수 표현식의 차이점 및 요약 (0) | 2022.06.02 |
(JS) 함수 표현식 (콜백함수/익명함수) (0) | 2022.06.02 |