* 이 글은 코어자바스크립트 책을 참고하여 기록하였습니다.
Function.prototype.call(thisArg[, arg1[, arg2[]]])
// 첫번째 인자 : this로 바인딩
// 그 이후 인자 : 호출할 함수의 매개변수
임의의 객체를 this로 지정할 수 있고
메서드의 호출 주체인 함수를 즉시 실행하도록 하는 명령.
call 메서드(1)
예제 3-14.
01 var func = function (a, b, c) {
02 console.log(this, a, b, c);
03 };
04
05 func(1, 2, 3); // Window{ ... } 1 2 3
06 func.call( { x: 1 }, 4, 5, 6 ); // { x: 1 } 4 5 6
- 05
func(1, 2, 3);
- 객체의 메서드를 그냥 호출하면 this는 객체를 참조.
- 06
func.call( { x: 1 }, 1, 2, 3);
- 임의의 객체
{x: 1}
를 this로 지정.
- 임의의 객체
call 메서드(2)
예제 3-15.
01 var obj = {
02 a: 1,
03 method: function (x, y){
04 console.log(this.a, x, y);
05 }
06 };
07
08 obj.method(2, 3); // 1 2 3
09 obj.method.call({ a: 4 }, 5, 6); // 4 5 6
- 09
obj.method.call( {a: 4}, 5, 6);
- 임의의 객체
{a: 4}
를 this로 지정.- obj에
a
프로퍼티가 있으므로a
에 4 할당하여 this는 4로 출력.
- obj에
- 임의의 객체