首頁 > web前端 > js教程 > 主體

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

Patricia Arquette
發布: 2024-10-29 00:07:30
原創
896 人瀏覽過

How Can I Access Private Members from Prototype-Defined Functions in JavaScript?

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

在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板