bind():将函数绑定到另一个对象上,返回一个函数。调用返回的函数,会将原函数当做绑定的对象的方法来使用。
即:返回一个原函数的拷贝,并拥有指定的this值和初始参数。
语法:bind(对象,实参)
传入的实参也会绑定至this。
自定义实现:
if(!Function.prototype.bind){
Function.prototype.bind = function(o/,*args*/){
var self = this, boundArgs = arguments;
return function(){
var args = [],i;
for(i = 1; i < boundArgs.length; i++){
args.push(boundArgs[i]);
}
for(i = 0; i < arguments.length; i++){
args.push(arguments[i]);
}
return self.apply(o, args);
};
};
}
例:
function f(){
for(var i = 0; i < arguments.length; i++){
console.log(arguments[i]);
}
}
var o = {};
var s = f.bind(o, 3, 4);
s(1,2);
//输出:3 4 1 2