国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表

圖片精選

主站蜘蛛池模板: 大兴区| 凤台县| 遵义县| 襄城县| 廉江市| 揭西县| 阳信县| 苏尼特右旗| 会理县| 寿光市| 桑植县| 宁陵县| 九江市| 新郑市| 古田县| 阳曲县| 隆回县| 多伦县| 贵港市| 木里| 遂昌县| 邻水| 正宁县| 开化县| 遂溪县| 保靖县| 五指山市| 云龙县| 舟曲县| 永胜县| 南昌县| 临泽县| 长寿区| 宁国市| 左权县| 荥阳市| 云和县| 平顺县| 芦山县| 延边| 大港区|