摘要:來自你不知道的如果要判斷一個運行中函數的綁定,就需要找到這個函數的直接調用位置。中的箭頭函數并不會使用四條標準的綁定規則,而是根據當前的詞法作用域來決定,具體來說,箭頭函數會繼承外層函數調用的綁定無論綁定到什么。
來自你不知道的JavaScript
如果要判斷一個運行中函數的 this 綁定,就需要找到這個函數的直接調用位置。找到之后
就可以順序應用下面這四條規則來判斷 this 的綁定對象。
由new調用?綁定到新創建的對象。
由call或者apply(或者bind)調用?綁定到指定的對象。
由上下文對象調用?綁定到那個上下文對象。
默認:在嚴格模式下綁定到undefined,否則綁定到全局對象。
一定要注意,有些調用可能在無意中使用默認綁定規則。如果想“更安全”地忽略 this 綁 定,你可以使用一個 DMZ 對象,比如 ? = Object.create(null),以保護全局對象。
ES6 中的箭頭函數并不會使用四條標準的綁定規則,而是根據當前的詞法作用域來決定 this,具體來說,箭頭函數會繼承外層函數調用的 this 綁定(無論 this 綁定到什么)。這 其實和 ES6 之前代碼中的 self = this 機制一樣。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/83481.html
摘要:關鍵字計算為當前執行上下文的屬性的值。毫無疑問它將指向了這個前置的對象。構造函數也是同理。嚴格模式無論調用位置,只取顯式給定的上下文綁定的,通過方法傳入的第一參數,否則是。其實并不屬于特殊規則,是由于各種事件監聽定義方式本身造成的。 this 是 JavaScript 中非常重要且使用最廣的一個關鍵字,它的值指向了一個對象的引用。這個引用的結果非常容易引起開發者的誤判,所以必須對這個關...
摘要:這也是為什么在后,諸如這類寫越來越少的原因定時器對的影響調用的代碼運行在與所在函數完全分離的執行環境上。 總結下對this的學習與理解 轉眼前端的學習已有一年,日常寫代碼中經常碰到this這個東西。特別是在用vue的時候,this還是有點多的,哈哈。在翻閱了一部分書籍和一堆大佬的博客后,決定總結一下這些東西,下面談談我對this的一些理解,如果有錯誤,歡迎大家批評指正。如果可以給你帶來...
摘要:方法創建一個新的函數當被調用時,它的關鍵字被設置為提供的值。語法簡單地看一下這些參數的含義當綁定函數被調用時,該參數會作為原函數運行時的指向當使用操作符調用綁定函數時,該參數無效。結尾文章很簡短,知道怎么實現一個原生的就行。 前言 這是underscore.js源碼分析的第五篇,如果你對這個系列感興趣,歡迎點擊 underscore-analysis/ watch一下,隨時可以看到動態...
摘要:方法創建一個新的函數當被調用時,它的關鍵字被設置為提供的值。語法簡單地看一下這些參數的含義當綁定函數被調用時,該參數會作為原函數運行時的指向當使用操作符調用綁定函數時,該參數無效。結尾文章很簡短,知道怎么實現一個原生的就行。 前言 這是underscore.js源碼分析的第五篇,如果你對這個系列感興趣,歡迎點擊 underscore-analysis/ watch一下,隨時可以看到動態...
摘要:另外,的綁定和函數聲明的位置沒有任何關系,之取決于函數的調用方式。請看下面代碼這樣,我們就可以在調用的時候強制把它的綁定到上綁定在傳統的面向類語言中,使用初始化類時會調用類中的構造函數。 關于this 上一章我們講了關于作用域和閉包的相關知識,現在開始新一輪的學習,那就是JavaScript中最復雜的機制之一---this關鍵字。它是一個很特別的關鍵字,被自動定義在所有函數的作用域中。...
閱讀 1597·2023-04-25 14:12
閱讀 1070·2021-08-27 16:24
閱讀 2533·2019-08-30 15:44
閱讀 2913·2019-08-30 13:16
閱讀 1665·2019-08-29 14:10
閱讀 966·2019-08-29 13:54
閱讀 1297·2019-08-29 13:09
閱讀 1803·2019-08-26 18:37