首頁  >  文章  >  web前端  >  如何從 JavaScript 中的原型定義函數存取私有成員變數?

如何從 JavaScript 中的原型定義函數存取私有成員變數?

Susan Sarandon
Susan Sarandon原創
2024-10-26 14:10:30443瀏覽

How to Access Private Member Variables from Prototype-Defined Functions in JavaScript?

從原型定義的函數存取私有成員變數

在JavaScript 中,建構函式中定義的私有成員變數無法被原型存取-定義的方法。這在下面的程式碼片段中很明顯:

TestClass = function(){
    var privateField = "hello";
    this.nonProtoHello = function(){alert(privateField)};
};
TestClass.prototype.prototypeHello = function(){alert(privateField)};

雖然nonProtoHello成功存取privateField,但prototypeHello失敗。

推理

函數,包括prototype -定義的方法,可以存取它們定義的範圍。私有成員變數在建構函數範圍內定義,使得原型定義的方法無法存取它們。

為原型方法提供對私有變數的存取:

  • 在 this 物件上定義 getter 和 setter。
  • 原型方法可以存取這些 getter 和 setter 來與私有變數互動。

例如:

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()); };

這種方法允許原型定義的方法透過 getter 和 setter 與私有成員變數交互,同時保持封裝性。

以上是如何從 JavaScript 中的原型定義函數存取私有成員變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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