Rumah hujung hadapan web tutorial js Bagaimanakah saya boleh mengakses pembolehubah ahli persendirian daripada fungsi yang ditentukan prototaip dalam JavaScript?

Bagaimanakah saya boleh mengakses pembolehubah ahli persendirian daripada fungsi yang ditentukan prototaip dalam JavaScript?

Oct 27, 2024 am 03:11 AM

How can I access private member variables from prototype-defined functions in JavaScript?

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()
Salin selepas log masuk

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()); };
Salin selepas log masuk
  • 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!

Kenyataan Laman Web ini
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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Ganti aksara rentetan dalam javascript Ganti aksara rentetan dalam javascript Mar 11, 2025 am 12:07 AM

Ganti aksara rentetan dalam javascript

periksa jQuery jika tarikh sah periksa jQuery jika tarikh sah Mar 01, 2025 am 08:51 AM

periksa jQuery jika tarikh sah

jQuery mendapatkan padding/margin elemen jQuery mendapatkan padding/margin elemen Mar 01, 2025 am 08:53 AM

jQuery mendapatkan padding/margin elemen

10 Tab Accordion JQuery 10 Tab Accordion JQuery Mar 01, 2025 am 01:34 AM

10 Tab Accordion JQuery

10 patut diperiksa plugin jQuery 10 patut diperiksa plugin jQuery Mar 01, 2025 am 01:29 AM

10 patut diperiksa plugin jQuery

HTTP Debugging dengan Node dan HTTP-Console HTTP Debugging dengan Node dan HTTP-Console Mar 01, 2025 am 01:37 AM

HTTP Debugging dengan Node dan HTTP-Console

jQuery tambah bar scroll ke div jQuery tambah bar scroll ke div Mar 01, 2025 am 01:30 AM

jQuery tambah bar scroll ke div

Tutorial Persediaan API Carian Google Custom Tutorial Persediaan API Carian Google Custom Mar 04, 2025 am 01:06 AM

Tutorial Persediaan API Carian Google Custom

See all articles