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);