클래스에서 메소드를 정의하는 두 가지 방식이 존재합니다. 하나는 메소드를 직접 정의하는 방식, 다른 하나는 this 키워드를 사용해 메소드를 정의하는 방식입니다. 이 두 방식이 어떤 차이점을 가지고 있는지 생각나는 대로 말씀해주세요.
class Person {
constructor(name) {
this.name = name;
}
sayHello() { // 직접 정의
console.log(`안녕하세요, 제 이름은 ${this.name}입니다.`);
}
}
this.methodName = function() { ... }
객체의 메소드
로 호출되면 'this'는 해당 객체
를 가리킵니다.독립적으로 호출
되거나 콜백으로 전달될 때 'this'가 예상과 다르게 바인딩될 수 있습니다.class Example {
method() {
console.log(this);
}
}
const obj = new Example();
obj.method(); // this는 obj를 가리킴
const func = obj.method;
func(); // this는 undefined 또는 전역 객체를 가리킴 (strict mode에 따라 다름)