從原型定義的函數中存取私有成員變數
在JavaScript 中,當在類別的建構函式中定義方法時,可以存取private在建構函式中宣告的變數。然而,在原型上定義方法時,存取這些私有變數就出現問題了。
舉例說明:
<code class="js">function TestClass() { var privateField = "hello"; this.nonProtoHello = function() { alert(privateField); }; } TestClass.prototype.prototypeHello = function() { alert(privateField); };</code>
呼叫 t.nonProtoHello() 可以正確存取私有 privateField,但是 t.prototypeHello () 拋出錯誤。這是因為原型定義的方法不是在建構函數的作用域內定義的,因此無法存取其局部變數。
不幸的是,沒有辦法直接從原型定義的函數存取私有變數。但是,您可以使用 getter 和 setter 來實現類似的功能。
<code class="js">function Person(name, secret) { // Public this.name = name; // Private var secret = secret; // Public methods have access to private members this.setSecret = function(s) { secret = s; } this.getSecret = function() { return secret; } } // Must use getters/setters Person.prototype.spillSecret = function() { alert(this.getSecret()); };</code>
在此範例中,原型定義的方法可以透過 getter 和 setter 函數存取私有變數 Secret。
以上是如何從 JavaScript 中的原型定義函數存取私有成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!