본문 바로가기

메서드로서 호출2

콜백 함수도 함수로서 호출이다 콜백 함수로 객체의 메서드를 전달하더라도 그 메서드는 메서드가 아닌 "함수로서 호출" 된다! 어떤 함수의 인자에 객체의 메서드를 전달하더라도 이는 결국 메서드가 아닌 "함수"일 뿐이다. 즉, 객체의 메서드를 콜백 함수로 전달하면 (별도의 바인딩이 없는 한) 해당 객체를 this로 바라볼 수 없게 된다는 것! let obj = { val: [1, 2, 3], methods: function(v, i) { console.log(this, v, i); } }; /* 메서드로서 호출 */ obj.methods(1, 2); // obj 1 2 /* 콜백함수로 객체의 메서드를 전달하더라도(obj.methods) 함수로서 호출 */ [5,6,7].forEach(obj.methods); // window 5 0 // .. 2022. 2. 26.
This에 대한 정리 다른 대부분의 객체지향 언어에서의 this는 클래스로 생성한 인스턴스 객체를 의미한다. this가 결정되는 과정은 이런 흐름으로 결정된다. 함수 호출 => 실행 컨텍스트 생성 => EnvironmentRecord : 변수정보수집(호이스팅) OuterEnvironmentReference : 스코프체인 ThisBinding : this가 결정 결국 함수를 호출할 때, this가 결정된다고 생각하면 된다 이러한 this가 상황에 따라 달라지는데 정리해보면 이렇다. 1. 메서드로서 호출 아주 간단하다. this는 프로퍼티명 앞의 객체 2. 함수로서 호출 호출 주체를 명시하지 않고 실행한 것이기 때문에 this가 지정되지 않는다. 결국, this가 지정되지 않은 경우 this는 전역 객체를 바라본다. 그렇다면 호.. 2022. 1. 22.