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

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

javascript如何使用bind指定接收者

2024-05-06 16:05:03
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了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í)候會(huì)報(bào)錯(cuò):

javascript如何使用bind指定接收者

 

產(chǎn)生這種報(bào)錯(cuò)的原因是json.jPush方法中的this并沒(méi)有指向json對(duì)象,而是指向了window.解決這個(gè)問(wèn)題的方法就是給這個(gè)this找對(duì)人家.
好在forEach()提供了一個(gè)參數(shù),專門用于指定對(duì)象的.看代碼.

復(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ù)的行為和原來(lái)函數(shù)的行為一樣,但他的接收者是我們給定的對(duì)象,而原有函數(shù)的接收者保持不變.
這意味著bind方法的使用是非常安全的,因?yàn)橐粋€(gè)函數(shù)或方法被共享的時(shí)候,不用擔(dān)心這個(gè)共享方法不會(huì)被修改掉了.
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 温宿县| 山东省| 荥阳市| 自治县| 长武县| 丰都县| 南丰县| 理塘县| 河曲县| 岱山县| 井冈山市| 大荔县| 舞钢市| 微山县| 清原| 扎兰屯市| 乐清市| 天柱县| 延安市| 青冈县| 普宁市| 呼图壁县| 崇阳县| 和平县| 铜梁县| 梓潼县| 申扎县| 大田县| 乌兰察布市| 奉新县| 枣强县| 江城| 云南省| 文水县| 金山区| 黄梅县| 内江市| 新干县| 淮安市| 巩义市| 天津市|