国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS中新手容易困惑的問題,是變量?是屬性?this的指向?

legendaryedu / 2419人閱讀

摘要:其實是有函數生成的,它是函數的一個內部屬性,與一樣也是函數的內部屬性,它是在函數執行時被生成,那么值呢的值始終是指向函數據以執行的環境。

問題

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

相關文章

  • JavasScript重難點知識

    摘要:忍者級別的函數操作對于什么是匿名函數,這里就不做過多介紹了。我們需要知道的是,對于而言,匿名函數是一個很重要且具有邏輯性的特性。通常,匿名函數的使用情況是創建一個供以后使用的函數。 JS 中的遞歸 遞歸, 遞歸基礎, 斐波那契數列, 使用遞歸方式深拷貝, 自定義事件添加 這一次,徹底弄懂 JavaScript 執行機制 本文的目的就是要保證你徹底弄懂javascript的執行機制,如果...

    forsigner 評論0 收藏0
  • ES6class使用

    摘要:的傳統生成一個類的方法,需要定義一個構造函數,然后通過的方式生成。定義類父類定義子類,繼承父類可以調用父類的方法如果子類中有構造函數,則必須使用調用。這是因為子類沒有自己的對象,而是繼承父類的對象,然后對其進行加工。 js的傳統生成一個類的方法,需要定義一個構造函數,然后通過new的方式生成。 function Cat() { this.name = kitty; th...

    brianway 評論0 收藏0
  • [翻譯] JavaScript Scoping and Hoisting

    摘要:對于新手來說是最令人困惑的部分之一。函數聲明通過的形式。很明顯的,語言自身定義和函數形參已經處于作用域頂端。這就意味著,函數聲明比變量聲明具有更高的優先級。但是這卻不意味著對這個名稱的賦值無效,僅僅是聲明的部分會被忽略而已。 原文鏈接:JavaScript Scoping and Hoisting 你知道下面的JavaScript代碼執行后會alert出什么值嗎? var foo = ...

    FingerLiu 評論0 收藏0
  • JavaScript系列(四) - 收藏集 - 掘金

    摘要:函數式編程前端掘金引言面向對象編程一直以來都是中的主導范式。函數式編程是一種強調減少對程序外部狀態產生改變的方式。 JavaScript 函數式編程 - 前端 - 掘金引言 面向對象編程一直以來都是JavaScript中的主導范式。JavaScript作為一門多范式編程語言,然而,近幾年,函數式編程越來越多得受到開發者的青睞。函數式編程是一種強調減少對程序外部狀態產生改變的方式。因此,...

    cfanr 評論0 收藏0
  • [翻譯]You Don't Know JS: this & Object Prot

    摘要:引用是從匿名函數內部引用自身的唯一方法,不過,最好的方法是避免使用匿名函數,至少在那些需要引用自身的時候,使用命名函數或者表達式。 [翻譯]Chapter1 this or that 第一次翻譯,翻譯的不好,已經再盡全力s去翻譯了,如果哪里看不明點,請出門左轉下邊原文地址 英文原文點擊這里 javascript中最令人困惑的東西就是this關鍵字,它在每個函數作用域中都會自動定義的一個...

    mingzhong 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<