结合使用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函数构造,所以绑定是用来传递这一点,然后返回一个未执行的方法,这是很巧妙的。