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

首頁 > 編程 > JavaScript > 正文

在JavaScript中正確引用bind方法的應(yīng)用

2019-11-20 12:30:46
字體:
供稿:網(wǎng)友

 在JavaScript中,方法往往涉及到上下文,也就是this,因此往往不能直接引用,就拿最常見的console.log("info…")來說,避免書寫冗長的console,直接用log("info…")代替,不假思索的會(huì)想到如下語法:

 var log = console.log; log("info…");

     很遺憾,運(yùn)行報(bào)錯(cuò):TypeError: Illegal invocation。

     為啥呢?對于console.log("info…")而言,log方法在console對象上調(diào)用,因此log方法中的this指向console對象;而我們用log變量指向console.log方法,然后直接調(diào)用log方法,此時(shí)log方法的this指向的是window對象,上下文不一致,當(dāng)然會(huì)報(bào)錯(cuò)了。

     此時(shí)我們可以用bind方法解決這個(gè)問題。bind方法允許手動(dòng)傳入一個(gè)this,作為當(dāng)前方法的上下文,然后返回持有上下文的方法,例如:

 var log = console.log.bind(console); log("info...");

     這樣就不會(huì)報(bào)錯(cuò)了。

     但是,bind方法并不支持ie 8以及更低版本的瀏覽器,我們完全可以自己實(shí)現(xiàn)一個(gè),很簡單。

 Function.prototype.bind = Function.prototype.bind || function(context){   var _this = this;      return function(){     _this.apply(context, arguments);   }; };

     核心通過apply方法實(shí)現(xiàn),閉包的經(jīng)典應(yīng)用。_this指向當(dāng)前方法,context指向當(dāng)前方法的上下文,二者均通過閉包訪問。

以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 东乡县| 喀喇沁旗| 永寿县| 固镇县| 建昌县| 阿鲁科尔沁旗| 芦山县| 延津县| 西青区| 江永县| 赫章县| 榆林市| 新竹市| 兴安县| 玉树县| 麻阳| 武威市| 曲麻莱县| 竹北市| 三明市| 青河县| 桂东县| 富平县| 崇礼县| 长子县| 兴山县| 门源| 淮安市| 东兰县| 陆河县| 马尔康县| 永宁县| 大渡口区| 阳曲县| 门头沟区| 遵义县| 滦平县| 图们市| 即墨市| 杂多县| 盘山县|