首頁 >web前端 >js教程 >我什麼時候應該使用 `this.var` 來存取 JavaScript 物件中的變數?

我什麼時候應該使用 `this.var` 來存取 JavaScript 物件中的變數?

Barbara Streisand
Barbara Streisand原創
2024-12-19 20:59:36248瀏覽

When Should I Use `this.var` to Access Variables in JavaScript Objects?

JavaScript 中的物件變數存取:this.var 還是 Not?

在 JavaScript 的物件導向程式設計模型中,人們常常想知道是否每個物件內的變數都需要 this 關鍵字。

this.var 與 Local變數

與 C 的基於類別的模型不同,JavaScript 使用原型繼承。在原型繼承中,一切都是對象,對象可以從其他對象繼承。

在 JavaScript 中,使用 new 關鍵字呼叫的建構子會建立新物件並為其指派屬性。建構函數中的 this 關鍵字引用新建立的物件。

可透過 this 關鍵字存取的方法是在物件上呼叫的函數。但是,在方法作用域內宣告的局部變數不能透過 this 直接存取。

範例:

function Foo() {
    this.bar = 0;
    this.getBar = function() {
        return this.bar;
    };
}

在此範例中,this.bar 指的是 bar Foo 實例的屬性。但是,getBar 方法中的 bar 引用的是預設情況下未定義的局部變數。要存取屬性,需要使用 this.bar。

透過閉包建立私有屬性

為了建立私有屬性,JavaScript 依賴閉包。在建構函數作用域內定義的函數可以存取該建構函數的局部變數。因此,透過在建構函式中建立函數並將它們公開為特權方法,您可以維護私有屬性。

範例:

function Foo() {
    var bar = "foo";
    this.getBar = function() {
        return bar;
    };
}

在此範例中, bar 是Foo 建構子的局部變數。 getBar 方法是有權存取 bar 的特權方法。

原型方法和特權方法

原型物件上定義的方法由所有實例繼承。但是,除非子原型繼承自父原型,否則它們無權存取特權方法。

總之,雖然從方法內存取物件屬性需要 this.var,但對於局部變數來說並不是必需的。特權方法,定義為建構函式中的閉包,提供了一種在 JavaScript 的物件導向程式設計模型中建立私有屬性的機制。

以上是我什麼時候應該使用 `this.var` 來存取 JavaScript 物件中的變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn