소년코딩

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 소년코딩

추천은 글쓴이에게 큰 도움이 됩니다.

악플보다 무서운 무플, 댓글은 블로그 운영에 큰 힘이됩니다.

댓글 로드 중…

블로그 정보

소년코딩 - 소년코딩

소년코딩, 자바스크립트, C++, 물리, 게임 코딩 이야기

최근에 게시된 이야기