function getConfig(colors,size,otherOptions){ console.log(colors,size,otherOptions); } var defaultConfig=getConfig.bind(null,"#cc0000","1024*768"); defaultConfig("123"); defaultConfig("456");
结果:
#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);//会将100作为第一个参数传入 func(1,2);//1+2+100=103 var func2=func.bind(undefined,200);//将200作为第二个参数传入 func2(10);//100+200+10=310
bind和call以及apply一样,都是可以改变上下文的this指向的。不同的是,call和apply一样,直接引用在方法上,而bind绑定this后返回一个方法,但内部核心还是apply。
bind是function的一个函数扩展方法,bind以后代码重新绑定了func内部的this指向(obj),但是不兼容ie6~8,兼容代码如下:
var obj = { a: 1, b: 2, 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 = 0; var func = obj.getCount.bind(obj); console.log(func(3, 4)); // 10