Bagaimanakah Saya Boleh Mengakses Ahli Persendirian daripada Fungsi Ditakrifkan Prototaip dalam JavaScript?

Patricia Arquette
Lepaskan: 2024-10-29 00:07:30
asal
896 orang telah melayarinya

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

Mengakses Pembolehubah Ahli Persendirian daripada Fungsi Ditentukan Prototaip

Dalam JavaScript, apabila mentakrifkan kaedah di dalam pembina kelas, anda boleh mengakses peribadi pembolehubah yang diisytiharkan dalam pembina. Walau bagaimanapun, apabila mentakrifkan kaedah pada prototaip, mengakses pembolehubah persendirian ini menjadi bermasalah.

Untuk menggambarkan:

<code class="js">function TestClass() {
    var privateField = "hello";
    this.nonProtoHello = function() { alert(privateField); };
}
TestClass.prototype.prototypeHello = function() { alert(privateField); };</code>
Salin selepas log masuk

Memanggil t.nonProtoHello() dengan betul mengakses PrivateField, tetapi t.prototypeHello () melemparkan ralat. Ini kerana kaedah yang ditentukan prototaip tidak ditakrifkan dalam skop pembina, dan oleh itu tidak boleh mengakses pembolehubah setempatnya.

Malangnya, tiada cara untuk mengakses terus pembolehubah persendirian daripada fungsi yang ditentukan prototaip. Walau bagaimanapun, anda boleh mencapai kefungsian yang serupa menggunakan getter dan 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>
Salin selepas log masuk

Dalam contoh ini, rahsia pembolehubah peribadi boleh diakses kepada kaedah yang ditentukan prototaip melalui fungsi getter dan setter.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Ahli Persendirian daripada Fungsi Ditakrifkan Prototaip dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan