


Bagaimanakah saya boleh mengakses pembolehubah ahli persendirian daripada fungsi yang ditentukan prototaip dalam JavaScript?
Oct 27, 2024 am 03:11 AMMengakses 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:
- Pendapat dan Penetap: Cipta pengambil dan penetap pada objek ini untuk menyediakan akses terkawal kepada pembolehubah persendirian. Kaedah yang ditentukan prototaip, serta kod lain yang mempunyai akses kepada objek, boleh menggunakan getter dan setter ini.
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()); };
- Akses Tidak Langsung: Walaupun kaedah yang ditentukan prototaip tidak boleh mengakses terus pembolehubah persendirian, ia boleh berinteraksi dengan fungsi pembalut yang mempunyai akses. Ini membenarkan capaian tidak langsung tanpa mendedahkan pembolehubah persendirian terus kepada prototaip.
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!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Ganti aksara rentetan dalam javascript

jQuery mendapatkan padding/margin elemen

HTTP Debugging dengan Node dan HTTP-Console

Tutorial Persediaan API Carian Google Custom
