Javascript 物件變數需要「this」嗎?
在 Javascript 中,類別的概念與 C 等語言不同。缺乏基於類別的繼承,為原型繼承讓路。物件及其屬性起著至關重要的作用。
使用建構子建構物件時,「this」關鍵字會授予物件屬性的存取權。考慮以下範例:
function Foo() { this.bar = 0; }
在此建構函式中,「this」關鍵字將「bar」屬性與建立的物件關聯起來。如果不使用它會導致錯誤“bar is undefined.”
但是,開發者發現了一個技巧,使用構造函數作為閉包,創建私人“屬性”:
function Foo() { var bar = "foo"; this.getBar = function getter() { return bar; }; }
在此範例中,變數“bar”是在本機上宣告的,而「getBar」是存取它的特權方法。這種技術允許創建不能在外部修改的私有變數。
需要注意的是,在原型上宣告的方法無法存取建構函式中的局部變數。然而,他們可以利用特權方法。在下面的程式碼中,原型方法「getFooBar」使用「getBar」方法連接後綴:
Foo.prototype.getFooBar = function() { return this.getBar() + "bar"; }
這允許創建公共(原型方法)和私有(特權方法)屬性在單一物件內。考慮記憶體使用非常重要,因為特權方法會建立具有不同作用域鏈的不同函數物件。對於大量實例,首選原型方法。
以上是JavaScript 物件變數什麼時候需要「this」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!