色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

JavaScript call和bind

JavaScript中的call()和bind()是兩個(gè)常用的方法,用于在運(yùn)行時(shí)改變函數(shù)的執(zhí)行上下文。在開(kāi)發(fā)中,我們常常需要向一個(gè)對(duì)象中注入一個(gè)函數(shù)并綁定它的執(zhí)行上下文。這就需要使用到call()和bind()這兩個(gè)方法。

call()函數(shù)調(diào)用一個(gè)方法, 以指定一個(gè)作為當(dāng)前對(duì)象的對(duì)象。因此我們可以借用一個(gè)對(duì)象的方法,獲得一個(gè)獨(dú)立于該對(duì)象的類的操作方式。call()和apply()的區(qū)別在于call()接收的是參數(shù)列表,而apply()接收的是數(shù)組。下面是一個(gè)例子:

var name = "小明";
var obj = {
name: "張三"
};
function say() {
console.log(this.name);
}
say.call(obj); // 輸出: 張三

在上面的例子中,我們使用call()方法指定了函數(shù)say()的上下文為obj對(duì)象。call()函數(shù)通過(guò)指定的this對(duì)象去調(diào)用原來(lái)的函數(shù),使函數(shù)中的this指向這個(gè)新的對(duì)象。

bind()函數(shù)會(huì)創(chuàng)建一個(gè)新函數(shù),被調(diào)用時(shí)其this值由第一個(gè)參數(shù)指定,該函數(shù)的返回值與$i原函數(shù)的返回值相同,除了在使用 new 運(yùn)算符時(shí),當(dāng)這個(gè)函數(shù)作為構(gòu)造函數(shù)被調(diào)用時(shí)其 this 值始終顯式綁定到指定的第一個(gè)參數(shù)。

舉一個(gè)例子:

var obj2 = {
name: "李四"
};
function sayHello( age) {
console.log(this.name + "年齡是:" + age);
}
var helloBind = sayHello.bind(obj2);
helloBind(18); // 輸出: 李四年齡是:18

在上面的例子中,我們使用bind()方法創(chuàng)建了一個(gè)新函數(shù)helloBind,其上下文是obj2對(duì)象。這里我們也可以給helloBind函數(shù)傳遞一個(gè)參數(shù)age,這個(gè)參數(shù)會(huì)在調(diào)用helloBind函數(shù)時(shí)使用。

可以看到,call()和bind()方法都是非常實(shí)用的JavaScript方法。如果我們需要向一個(gè)對(duì)象注入函數(shù)并且綁定它的執(zhí)行上下文,我們可以使用這兩個(gè)方法。它們都可以讓我們?cè)谶\(yùn)行時(shí)更改函數(shù)的執(zhí)行上下文,從而讓函數(shù)獲得一個(gè)新的this對(duì)象。

下一篇=php