ES5 bind方法

function getConfig(colors,size,otherOptions){
console.log(colors,size,otherOptions);
}
var defaultConfig=getConfig.bind(null,"#cc0000","1024*768");
defaultConfig("");
defaultConfig("");

结果:

#cc0000 1024*768 123
#cc0000 1024*768 456

解释:"#cc0000","1024*768"作为参数 colors,size传入

function add(a,b,c){
return a+b+c;
} var func=add.bind(undefined,);//会将100作为第一个参数传入
func(,);//1+2+100=103 var func2=func.bind(undefined,);//将200作为第二个参数传入
func2();//100+200+10=310

bind和call以及apply一样,都是可以改变上下文的this指向的。不同的是,call和apply一样,直接引用在方法上,而bind绑定this后返回一个方法,但内部核心还是apply。

bind是function的一个函数扩展方法,bind以后代码重新绑定了func内部的this指向(obj),但是不兼容ie6~8,兼容代码如下:

var obj = {
a: ,
b: ,
getCount: function(c, d) {
return this.a + this.b + c + d;
}
}; Function.prototype.bind = Function.prototype.bind || function(context) {
var that = this;
return function() {
// console.log(arguments); // console [3,4] if ie<6-8>
return that.apply(context, arguments); }
}
window.a = window.b = ;
var func = obj.getCount.bind(obj);
console.log(func(, )); //
上一篇:探究adroid活动


下一篇:团队项目开发中,常见的版本控制有svn,git