javascript如何使用bind指定接收者
更新時(shí)間:2014年05月04日 17:18:25 作者:
這篇文章主要介紹了javascript如何使用bind指定接收者,需要的朋友可以參考下
復(fù)制代碼 代碼如下:
var json = {
jArray: [],
jPush: function (c) {
this.jArray.push(c);
}
}
var examp = ["123", "~", "456"];
使用ES5給出的forEach循環(huán)examp,并且將它們添加到j(luò)son中的jArray中;
復(fù)制代碼 代碼如下:
examp.forEach(json.jPush);
這個(gè)時(shí)候會報(bào)錯(cuò):

產(chǎn)生這種報(bào)錯(cuò)的原因是json.jPush方法中的this并沒有指向json對象,而是指向了window.解決這個(gè)問題的方法就是給這個(gè)this找對人家.
好在forEach()提供了一個(gè)參數(shù),專門用于指定對象的.看代碼.
復(fù)制代碼 代碼如下:
examp.forEach(json.jPush,json);
alert(json.jArray);//結(jié)果正常了是,123~456
還有另外一種方法:
復(fù)制代碼 代碼如下:
examp.forEach(function (c) {
json.jPush(c);
});
alert(json.jArray);//123~456
還可以使用bind綁定
復(fù)制代碼 代碼如下:
examp.forEach(json.jPush.bind(json));
alert(json.jArray);
bind是創(chuàng)建了一個(gè)新函數(shù)而不是修改一個(gè)函數(shù).新函數(shù)的行為和原來函數(shù)的行為一樣,但他的接收者是我們給定的對象,而原有函數(shù)的接收者保持不變.
這意味著bind方法的使用是非常安全的,因?yàn)橐粋€(gè)函數(shù)或方法被共享的時(shí)候,不用擔(dān)心這個(gè)共享方法不會被修改掉了.
相關(guān)文章
JS中使用 after 偽類清除浮動(dòng)實(shí)例
這篇文章主要介紹了使用 after 偽類清除浮動(dòng)實(shí)例,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下2017-03-03js中字符型和數(shù)值型數(shù)字的互相轉(zhuǎn)化方法(必看)
下面小編就為大家?guī)硪黄猨s中字符型和數(shù)值型數(shù)字的互相轉(zhuǎn)化方法(必看)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04JavaScript 判斷數(shù)據(jù)類型的4種方法
這篇文章主要介紹了JavaScript 判斷數(shù)據(jù)類型的4種方法,幫助大家更好的理解和學(xué)習(xí)JavaScript,感興趣的朋友可以了解下2020-09-09JavaScript中幾種時(shí)間格式之間的簡單轉(zhuǎn)換
近期在練習(xí)或?qū)戫?xiàng)目時(shí)經(jīng)常會遇到時(shí)間格式的轉(zhuǎn)換問題,今天我就來總結(jié)一下,這篇文章主要給大家介紹了關(guān)于JavaScript中幾種時(shí)間格式之間的簡單轉(zhuǎn)換,需要的朋友可以參考下2024-01-01javascript根據(jù)時(shí)間生成m位隨機(jī)數(shù)最大13位
javascript根據(jù)時(shí)間生成m位隨機(jī)數(shù),最大13位隨機(jī)數(shù),并且不能保證首位不為0,實(shí)現(xiàn)代碼如下,需要的朋友可以參考下2014-10-10IE8 下的Js錯(cuò)誤HTML Parsing Error...
今天調(diào)試一段JS代碼出現(xiàn)這個(gè)狀況..在火狐 IE7 和IE6下都正常...郁悶,在網(wǎng)上搜索了一下相關(guān)資料 一般錯(cuò)誤都是指所指定的標(biāo)簽沒有加載完就是用該對象....2009-08-08