함수 프로퍼티, 메서드, 생성자
8.7.4 bind()메서드
함수(f
)에 bind()
메서드를 호출하면서 객체(o
)를 전달하면, bind()
메서드는 새로운 함수를 반환한다(3번째줄). 반환된 새 함수를 호출하면, 원래 함수(f
)가 전달된 객체(o
)의 메서드로 호출된다. 새로운함수(f.bind(o)(x)
는 o.f(x)
처럼 작동한다.)에 전달한 모든 인자(2)는 원래 함수에도 전달된다.
function f(y) {return this.x + y}; //바인드 되어야 하는 함수
var o = {x:1}; //바인드될 객체
var g = f.bind(o); //g(x)를 호출하면 o.f(x)가 호출된다. ==> 새로운 함수를 반환한다.
g(2); // ==> 3
내가 만든 실습
var o = {
"apple" : function(x){return arguments[0];}
}
function f(y){return this.apple(y)*2;}
var g = f.bind(o);
g(2); // ==> 4