bind
bind 함수는 기본적으로 Function.prototype에 내장된 함수다.
// 내장된 bind 함수의 기본적인 polyfill
Function.prototype.bind = function(thisArg) {
var fn = this,
slice = Array.prototype.slice,
args = slice.call(arguments, 1);
return function() {
return fn.apply(thisArg, args.concat(slice.call(arguments)));
}
그러나 좀 더 기본적인 예를 들어보겠다.
bind() 함수는 커링 기법을 활용한 함수다.
사용자가 고정시키고자 하는 인자를 bind() 함수를 호출할때 인자로 넘겨주고 반환받은 함수를 호출하면서 나머지 가변인자를 넣어줄 수 있다.
curry() 함수와 다른 점은 함수를 호출할 때 this에 바인딩 시킬 객체를 명시적으로 넣어줄 수 있다는 점이다.
function print() {
for( var i in this ) {
console.log(i + ": " + this[i]);
}
for( var i in arguments ) {
console.log(i + ": " + arguments[i]);
}
}
var blog = {
name: 'oppacoding',
age: 25
};
var newPrint = print.bind(blog);
newPrint('hello', 'javascript');
/*
name: 'oppacoding'
age: 25
0: 'hello'
1: 'javascript'
*/
newPrint() 함수는 blog 객체를 this에 바인딩시켜 print() 함수를 실행하는 새로운 함수다.
by 소년코딩
추천은 글쓴이에게 큰 도움이 됩니다.
악플보다 무서운 무플, 댓글은 블로그 운영에 큰 힘이됩니다.