结合使用ecmascript5方法(ES5)
一直以来,与此相关的东西都是模糊的,比如打电话、申请等等。绑定,就像调用和应用一样,都是可以改变上下文的,不同的是,调用,比如应用,在方法中直接引用,绑定在绑定之后返回一个方法,但是内核是应用的。
直接看例子:
复制代码代码如下所示:
var obj = { {
甲:1,
乙:2,
getCount:功能(C,D){
返回这个;
}
};
窗口= a窗口。b = 0;
console.log(obj.getcount(3, 4)); / / 10
VAR函数= obj.getcount;
console.log(功能(3, 4)); / / 7
那是为什么因为函数上下文中的这个是窗口!绑定的存在就是为了改变这个点来获得期望的值:
复制代码代码如下所示:
var obj = { {
甲:1,
乙:2,
getCount:功能(C,D){
返回这个;
}
};
窗口= a窗口。b = 0;
VAR函数= obj.getcount.bind(obj);
console.log(功能(3, 4)); / / 10
绑定是函数的函数扩展方法。绑定后,代码重新绑定这个方向(obj)里面的功能,但它不是IE6 ~ 8兼容,并兼容的代码如下。
复制代码代码如下所示:
var obj = { {
甲:1,
乙:2,
getCount:功能(C,D){
返回这个;
}
};
function.prototype.bind = function.prototype.bind功能(上下文){ | |
var =;
返回函数(){
(论点); / / / / console.log控制台{ }如果IE 3,4
返回that.apply(语境参数);
}
}
窗口= a窗口。b = 0;
VAR函数= obj.getcount.bind(obj);
console.log(功能(3, 4)); / / 10
事实上,在我看来,绑定的核心是返回一个未执行的方法,如果应用,或者直接调用。
复制代码代码如下所示:
VaR ANS = obj.getcount.apply(obj,{ 3, 4 });
console.log(ANS); / / 10
这是不可能使用短func函数构造,所以绑定是用来传递这一点,然后返回一个未执行的方法,这是很巧妙的。