摘要:其實是有函數生成的,它是函數的一個內部屬性,與一樣也是函數的內部屬性,它是在函數執行時被生成,那么值呢的值始終是指向函數據以執行的環境。
問題
case1:
var a = { name: "jiavan", bname: name }; console.log(a.bname);
case2:
var a = { name: "jiavan", bname: this.name }; console.log(a.bname);
case3:
var a = { name: "jiavan", bname: a.name }; console.log(bname);分析
先看case1,這是一個基礎差的同學經常犯的一個錯誤,在對象內部,把對象的屬性當變量使用,它的輸出結果是空的,那么為什么呢?我用新的一段代碼解釋下:
var a = { "name": "jiavan", bname: name }; console.log(a.bname);
注意"name"與name的區別,一個是對象屬性,一個是變量,而且重要的是在對象內的這個name變量還沒有被var聲明,所以成為了全局變量,不信你可以看看window下是否掛載了一個name。
case2,this是一個古老的傳說,上面的結果會與case1一樣。值得注意的是,很多人沒有搞懂this是有誰生成的,具體的值是什么,上面直接在對象的屬性值中使用了this,此時this是指向全局,即window的(瀏覽器環境下),那么this何時生成。
其實this是有函數生成的,它是函數的一個內部屬性,與arguments一樣也是函數的內部屬性,它是在函數執行時被生成,那么值呢?this的值始終是指向函數據以執行的環境。簡單的可以理解為調用函數的對象。
在js中只有兩種作用域,一種是全局,一種是函數級作用域(可以利用其模仿塊級作用域),直接在對象屬性中使用this那么此時this就是window,而且還在全局上掛載了一個name屬性沒有值。
case3,看了前面兩個的分析,第三個應該就很容易理解了,在cname屬性上使用了a.name而a還沒有完成定義是不能直接使用的,此時直接給window掛載了一個變量a還對其進行了屬性name的訪問,變量不賦初值是默認undefined的,那么你能對一個undefined進行屬性訪問?
嗯,大概就這樣,有不對不嚴謹的地方歡迎指出。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/79176.html
摘要:忍者級別的函數操作對于什么是匿名函數,這里就不做過多介紹了。我們需要知道的是,對于而言,匿名函數是一個很重要且具有邏輯性的特性。通常,匿名函數的使用情況是創建一個供以后使用的函數。 JS 中的遞歸 遞歸, 遞歸基礎, 斐波那契數列, 使用遞歸方式深拷貝, 自定義事件添加 這一次,徹底弄懂 JavaScript 執行機制 本文的目的就是要保證你徹底弄懂javascript的執行機制,如果...
摘要:的傳統生成一個類的方法,需要定義一個構造函數,然后通過的方式生成。定義類父類定義子類,繼承父類可以調用父類的方法如果子類中有構造函數,則必須使用調用。這是因為子類沒有自己的對象,而是繼承父類的對象,然后對其進行加工。 js的傳統生成一個類的方法,需要定義一個構造函數,然后通過new的方式生成。 function Cat() { this.name = kitty; th...
摘要:對于新手來說是最令人困惑的部分之一。函數聲明通過的形式。很明顯的,語言自身定義和函數形參已經處于作用域頂端。這就意味著,函數聲明比變量聲明具有更高的優先級。但是這卻不意味著對這個名稱的賦值無效,僅僅是聲明的部分會被忽略而已。 原文鏈接:JavaScript Scoping and Hoisting 你知道下面的JavaScript代碼執行后會alert出什么值嗎? var foo = ...
摘要:函數式編程前端掘金引言面向對象編程一直以來都是中的主導范式。函數式編程是一種強調減少對程序外部狀態產生改變的方式。 JavaScript 函數式編程 - 前端 - 掘金引言 面向對象編程一直以來都是JavaScript中的主導范式。JavaScript作為一門多范式編程語言,然而,近幾年,函數式編程越來越多得受到開發者的青睞。函數式編程是一種強調減少對程序外部狀態產生改變的方式。因此,...
摘要:引用是從匿名函數內部引用自身的唯一方法,不過,最好的方法是避免使用匿名函數,至少在那些需要引用自身的時候,使用命名函數或者表達式。 [翻譯]Chapter1 this or that 第一次翻譯,翻譯的不好,已經再盡全力s去翻譯了,如果哪里看不明點,請出門左轉下邊原文地址 英文原文點擊這里 javascript中最令人困惑的東西就是this關鍵字,它在每個函數作用域中都會自動定義的一個...
閱讀 4361·2021-11-22 09:34
閱讀 2690·2021-11-12 10:36
閱讀 742·2021-08-18 10:23
閱讀 2636·2019-08-30 15:55
閱讀 3111·2019-08-30 15:53
閱讀 2081·2019-08-30 15:44
閱讀 1361·2019-08-29 15:37
閱讀 1401·2019-08-29 13:04