Javascript:物件變數「this.var」的必要性
在某些程式語言(如C)中,使用「this ”聲明物件變數當變數在類別的範圍內時,“->變數”通常是可選的。然而,在 Javascript 中,對物件中的每個變數使用「this.var」至關重要。
為什麼需要「this.var」
Javascript 採用獨特的原型繼承模型而不是基於類別的系統。使用“new”關鍵字建立的物件從其原型物件繼承屬性和方法。
在物件建構子中定義方法時,「this」關鍵字會引用正在建立的物件。不使用「this」分配屬性會在方法內建立局部變量,這些變數在函數外部無法存取。
範例:不使用「this.var」
function Foo() { bar = 0; getBar = function() { return bar; } } const foo = new Foo(); console.log(foo.getBar()); // ReferenceError: bar is not defined
範例:與"this.var"
function Foo() { this.bar = 0; this.getBar = function() { return this.bar; } } const foo = new Foo(); console.log(foo.getBar()); // 0
替代方法:閉包
為了在物件內建立私有變量, Javascript 開發人員經常採用閉包方法。透過在建構函數內定義局部變數並傳回存取這些變數的特權方法,可以在公開公共方法的同時保留私有屬性。
範例:使用閉包
function Foo() { let bar = "foo"; this.getBar = function() { return bar; }; } const foo = new Foo(); console.log(foo.getBar()); // "foo"
結論
而使用「this.var」可能看起來很不錯冗長,但在Javascript 中,它對於確保物件變數在方法內可存取並保持局部變數和物件層級變數之間的區別至關重要。或者,使用閉包提供了一種在物件內建立私有變數的方法,從而增強了封裝性和資料安全性。
以上是為什麼 JavaScript 中的物件變數需要 `this.var`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!