Mengakses Pembolehubah Ahli Persendirian daripada Fungsi Ditentukan Prototaip
Dalam JavaScript, pembolehubah persendirian, yang diisytiharkan dalam pembina, tidak boleh diakses secara langsung kepada kaedah ditakrifkan dalam prototaip. Senario ini boleh diperhatikan dalam coretan kod berikut:
TestClass = function(){ var privateField = "hello"; this.nonProtoHello = function(){alert(privateField)}; }; TestClass.prototype.prototypeHello = function(){alert(privateField)}; // This executes successfully: t.nonProtoHello() // This fails: t.prototypeHello()
Tingkah laku ini berlaku kerana kaedah yang ditakrifkan dalam pembina mempunyai akses kepada pembolehubah persendirian kerana aksesnya kepada skop di mana ia ditakrifkan. Walau bagaimanapun, kaedah yang ditentukan prototaip tidak dibuat dalam skop pembina dan kekurangan akses kepada pembolehubah setempatnya.
Menangani Keperluan untuk Akses
Walaupun tiada cara langsung untuk memberikan akses kepada pembolehubah persendirian bagi kaedah yang ditentukan prototaip, terdapat pendekatan alternatif untuk mencapai kefungsian yang diingini:
Berikut ialah contoh:
function Person(name, secret) { // public this.name = name; // private var secret = secret; // public methods with controlled access this.setSecret = function(s) { secret = s; } this.getSecret = function() { return secret; } } // Prototype-defined method using getters Person.prototype.spillSecret = function() { alert(this.getSecret()); };
Ringkasnya, sementara mengakses pembolehubah persendirian daripada kaedah yang ditentukan prototaip sememangnya dihadkan, menggunakan pengambil dan penetap atau akses tidak langsung menyediakan penyelesaian yang fleksibel untuk mencapai akses terkawal kepada pembolehubah ini.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengakses pembolehubah ahli persendirian daripada fungsi yang ditentukan prototaip dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!