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

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

 更新時間: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)典應(yīng)用。_this指向當前方法,context指向當前方法的上下文,二者均通過閉包訪問。

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

相關(guān)文章

最新評論

禹州市| 鹿邑县| 玉环县| 青海省| 滁州市| 宁津县| 渝中区| 乌审旗| 广灵县| 凌海市| 河西区| 静乐县| 高雄县| 新晃| 朝阳区| 太保市| 武山县| 吐鲁番市| 林甸县| 鄂托克旗| 云安县| 黔江区| 含山县| 通辽市| 玉树县| 镇远县| 乐至县| 武冈市| 洪洞县| 德昌县| 永定县| 扬中市| 山丹县| 确山县| 双江| 双牌县| 密云县| 汉寿县| 库尔勒市| 陇川县| 宝应县|