最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在JavaScript中正確引用bind方法的應用

 更新時間:2015年05月11日 09:14:57   投稿:hebedich  
本文的重點在于討論bind()方法的實現(xiàn),在開始討論bind()的實現(xiàn)之前,我們先來看看bind()方法的使用,有需要的小伙伴可以參考下。

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

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

     很遺憾,運行報錯:TypeError: Illegal invocation。

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

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

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

     這樣就不會報錯了。

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

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

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

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

相關(guān)文章

最新評論

广东省| 南召县| 康乐县| 静安区| 三台县| 富民县| 罗甸县| 扶沟县| 宜宾县| 乐至县| 张家界市| 独山县| 浦北县| 贵州省| 赤水市| 濮阳市| 辛集市| 石棉县| 建德市| 邯郸县| 揭阳市| 临城县| 海南省| 霍林郭勒市| 贵阳市| 沙田区| 比如县| 得荣县| 芷江| 米泉市| 双江| 广昌县| 京山县| 阿拉善盟| 墨脱县| 英吉沙县| 兴城市| 揭西县| 定西市| 佳木斯市| 桦川县|