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

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 16:19:50
字體:
來源:轉載
供稿:網友

本文的重點在于討論bind()方法的實現,在開始討論bind()的實現之前,我們先來看看bind()方法的使用,有需要的小伙伴可以參考下。

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

 

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

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

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

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

 

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

這樣就不會報錯了。

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

 

 
  1. Function.prototype.bind = Function.prototype.bind || function(context){ 
  2. var _this = this
  3.  
  4. return function(){ 
  5. _this.apply(context, arguments); 
  6. }; 
  7. }; 

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 钟山县| 太仓市| 大同县| 彭山县| 大名县| 二连浩特市| 无棣县| 寿光市| 洮南市| 印江| 湖南省| 磐安县| 罗田县| 西城区| 湘潭市| 射洪县| 台南县| 确山县| 大关县| 祥云县| 云龙县| 光山县| 桦川县| 宁化县| 明溪县| 神池县| 民丰县| 仁寿县| 海兴县| 澳门| 巫溪县| 江川县| 上蔡县| 奉节县| 新河县| 桦南县| 抚顺市| 原平市| 萨嘎县| 昌乐县| 启东市|