码迷,mamicode.com
首页 > 其他好文 > 详细

ES5 bind方法

时间:2016-08-17 22:58:11      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

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

 

ES5 bind方法

标签:

原文地址:http://www.cnblogs.com/xiaotaiyang/p/5782118.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!