Mengakses Pembolehubah Ahli Persendirian daripada Fungsi Ditentukan Prototaip
Dalam JavaScript, pembolehubah ahli persendirian, yang ditakrifkan dalam pembina, tidak boleh diakses oleh prototaip- kaedah yang ditentukan. Ini jelas dalam coretan kod berikut:
TestClass = function(){ var privateField = "hello"; this.nonProtoHello = function(){alert(privateField)}; }; TestClass.prototype.prototypeHello = function(){alert(privateField)};
Semasa nonProtoHello berjaya mengakses privateField, prototypeHello gagal.
Reasoning
Fungsi, termasuk prototaip -kaedah yang ditentukan, mempunyai akses kepada skop di mana ia ditakrifkan. Pembolehubah ahli persendirian ditakrifkan dalam skop pembina, menjadikannya tidak boleh diakses oleh kaedah yang ditentukan prototaip.
Penyelesaian
Untuk menyediakan kaedah prototaip akses kepada pembolehubah persendirian:
Contohnya:
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()); };
Pendekatan ini membenarkan kaedah yang ditakrifkan prototaip untuk berinteraksi dengan pembolehubah ahli persendirian melalui getter dan setter, sambil mengekalkan enkapsulasi.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Pembolehubah Ahli Persendirian daripada Fungsi Ditakrifkan Prototaip dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!