国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript如何使用bind指定接收者

2019-11-20 20:44:47
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

var json = {
jArray: [],
jPush: function (c) {
this.jArray.push(c);
}
}
var examp = ["123", "~", "456"];

使用ES5給出的forEach循環examp,并且將它們添加到json中的jArray中;
復制代碼 代碼如下:

examp.forEach(json.jPush);

這個時候會報錯:
 

產生這種報錯的原因是json.jPush方法中的this并沒有指向json對象,而是指向了window.解決這個問題的方法就是給這個this找對人家.
好在forEach()提供了一個參數,專門用于指定對象的.看代碼.
復制代碼 代碼如下:

examp.forEach(json.jPush,json);
alert(json.jArray);//結果正常了是,123~456

還有另外一種方法:
復制代碼 代碼如下:

examp.forEach(function (c) {
json.jPush(c);
});
alert(json.jArray);//123~456

還可以使用bind綁定
復制代碼 代碼如下:

examp.forEach(json.jPush.bind(json));
alert(json.jArray);

bind是創建了一個新函數而不是修改一個函數.新函數的行為和原來函數的行為一樣,但他的接收者是我們給定的對象,而原有函數的接收者保持不變.
這意味著bind方法的使用是非常安全的,因為一個函數或方法被共享的時候,不用擔心這個共享方法不會被修改掉了.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镇雄县| 福清市| 香河县| 叶城县| 镇沅| 邢台县| 临海市| 乡城县| 灵石县| 泽库县| 永福县| 绥德县| 门源| 凌源市| 尚志市| 丰城市| 涡阳县| 绵阳市| 三明市| 噶尔县| 惠安县| 涟水县| 祥云县| 宝丰县| 林周县| 商南县| 太白县| 高淳县| 金门县| 孟州市| 广宁县| 墨竹工卡县| 嘉善县| 安化县| 鹤壁市| 温泉县| 福州市| 五河县| 新兴县| 雷州市| 渑池县|