摘要:的定義執行上下文。這本書也是舉了好幾個例子來說明,這句話的含義。我個人也認為,不通過代碼,非常難說明問題。所以,修改的是全局的,并不是自身的。
this
先說明一下,this是我JavaScript的盲區,寫這篇文章,就是為了讓自己能重新認識this,并且搞清楚,js里面的this,到底是什么。 這個系列主要是記錄我自己看《你不知道的JavaScript》這本書的筆記。
this的定義:執行上下文。
這句話理解起來,很費勁。這本書也是舉了好幾個例子來說明,這句話的含義。我個人也認為,不通過代碼,非常難說明問題。
exp1:
function fn() { console.log("fn", this) } fn() // log: // fn, // Window?{postMessage: ?, blur: ?, focus: ?, close: ?, parent: Window,?…}
這個例子非常簡單,一般也能看出輸出的this是window,原因很簡單,這個fn是全局函數,也是在全局作用域下運行的,所以執行上下文,可以理解為執行作用域,就是window。
exp2:
var count = 0; function fn(num) { console.log("你說幾就幾:"+num) this.count += 5 } fn.count=1 fn(2) // 你說幾就幾:2 console.log(fn.count) // 1 console.log(count) // 5
這個例子,執行 fn.count 和 fn內部的 this.count其實沒什么關系。因為fn在執行的時候,執行上下文還是window。所以,this.count += 5修改的是全局的count,并不是fn自身的count。
exp3:
function fn() { this.count = 1; function myFoo() { this.count +=2; } myFoo() console.log(this.count) } fn() // 3
未完待續。。。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/102786.html
下一篇:《你不知道的javascript》筆記_對象&原型 寫在前面 上一篇博客我們知道詞法作用域是由變量書寫的位置決定的,那this又是在哪里確定的呢?如何能夠精準的判斷this的指向?這篇博客會逐條闡述 書中有這樣幾句話: this是在運行時進行綁定的,并不是在編寫時綁定,它的上下文取決于函數調用時的各種條件this的綁定和函數聲明的位置沒有任何關系,只取決于函數的調用方式當一個函數被調用時...
摘要:本書屬于基礎類書籍,會有比較多的基礎知識,所以這里僅記錄平常不怎么容易注意到的知識點,不會全記,供大家和自己翻閱不錯,下冊的知識點就這么少,非常不推介看下冊上中下三本的讀書筆記你不知道的上讀書筆記你不知道的中讀書筆記你不知道的下讀書筆記第三 本書屬于基礎類書籍,會有比較多的基礎知識,所以這里僅記錄平常不怎么容易注意到的知識點,不會全記,供大家和自己翻閱; 不錯,下冊的知識點就這么少,非...
摘要:但是如果非全局的變量如果被遮蔽了,無論如何都無法被訪問到。但是如果引擎在代碼中找到,就會完全不做任何優化。結構的分句中具有塊級作用域。第四章提升編譯器函數聲明會被提升,而函數表達式不會被提升。 本書屬于基礎類書籍,會有比較多的基礎知識,所以這里僅記錄平常不怎么容易注意到的知識點,不會全記,供大家和自己翻閱; 上中下三本的讀書筆記: 《你不知道的JavaScript》 (上) 讀書筆記...
摘要:最近剛剛看完了你不知道的上卷,對有了更進一步的了解。你不知道的上卷由兩部分組成,第一部分是作用域和閉包,第二部分是和對象原型。附錄詞法這一章并沒有說明機制,只是介紹了中的箭頭函數引入的行為詞法。第章混合對象類類理論類的機制類的繼承混入。 最近剛剛看完了《你不知道的 JavaScript》上卷,對 JavaScript 有了更進一步的了解。 《你不知道的 JavaScript》上卷由兩部...
閱讀 2562·2023-04-25 18:13
閱讀 770·2021-11-22 12:10
閱讀 2970·2021-11-22 11:57
閱讀 2138·2021-11-19 11:26
閱讀 2164·2021-09-22 15:40
閱讀 1460·2021-09-03 10:28
閱讀 2704·2019-08-30 15:53
閱讀 1950·2019-08-30 15:44