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!