国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 富宁县| 班玛县| 泽普县| 封开县| 清苑县| 象州县| 泰来县| 三穗县| 社旗县| 岳普湖县| 颍上县| 河源市| 大足县| 赤水市| 石柱| 白朗县| 淮北市| 吕梁市| 通海县| 蛟河市| 雅江县| 芜湖县| 蒙阴县| 城口县| 甘洛县| 澄迈县| 枝江市| 秦安县| 容城县| 临潭县| 灌阳县| 江津市| 张家港市| 无棣县| 墨脱县| 济阳县| 大兴区| 北碚区| 昭苏县| 环江| 周宁县|