Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimanakah Saya Boleh Mengakses Ahli Persendirian daripada Fungsi Ditakrifkan Prototaip dalam JavaScript?

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

Patricia Arquette
Patricia Arquetteasal
2024-10-29 00:07:30836semak imbas

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>

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>

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!

Kenyataan:
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