Function.prototype.bind的实现

Function.prototype.bind = function() {

     var self = this,

           content = [].shift.call( arguments ),  //需要绑定的this上下文

          args = [].slice.call( arguments ); //剩余的参数转成数组

    return function() {

           return self.apply( content ,[].concat.call( args , [].slice.call( argument )));

           //执行新的函数时候,会把,之前传入的content当作新函数体内的this

          //而且组合两次分别传入的参数,作为新函数的参数

    }

}

例子:

var obj = {

    name: 'sven'

}

var func = function() {

    alter(this.name); //输出:sven

    alert([a,b,c,d]); //输出: [1,2,3,4]

}(obj,1,2);

func(3,4);

猜你喜欢

转载自blog.csdn.net/qq_22091941/article/details/84558123
今日推荐