Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mengekalkan Nilai \'ini\' Semasa Menyusun Kod Berasaskan Prototaip JavaScript?

Bagaimanakah Saya Boleh Mengekalkan Nilai \'ini\' Semasa Menyusun Kod Berasaskan Prototaip JavaScript?

Barbara Streisand
Barbara Streisandasal
2024-11-30 12:07:12571semak imbas

How Can I Maintain the

Organisasi Kod dan Nilai "ini" dalam JavaScript Berorientasikan Objek

Apabila mengatur kod berasaskan prototaip JavaScript, cabaran biasa timbul dalam memelihara rujukan objek dan warisan. Katakan anda mempunyai kelas Carousel dengan pelbagai fungsi seperti next(), prev(), dan bindControls(). Untuk meningkatkan organisasi kod, anda ingin mengumpulkan fungsi ini di bawah sifat kawalan seperti:

Carousel.prototype.controls = {
   next: function () { ... } , 
   prev: function() { ... },
   bindControls: function () { .. }
};

Walau bagaimanapun, pendekatan ini mengganggu nilai "ini", yang penting untuk mengakses sifat dan kaedah objek. Untuk mengekalkan nilai "ini" dalam konteks asal, anda boleh menggunakan penyelesaian berikut:

Buat kelas Kawalan, yang menyimpan rujukan kepada objek boleh dikawal dalam pembina Kawalan. Kaedah dalam Kawalan yang mengendalikan tindakan, seperti next(), menggunakan rujukan untuk menggunakan kaedah yang sesuai dalam objek boleh dikawal.

var Controls = function (controllable_object) {
    this.ref = controllable_object;
};
Controls.prototype.next = function () {
    this.ref.foo();
}
// ..

var Carousel = function () {
    this.controls = new Controls(this);
};
// ..

Ini memastikan pewarisan dan membolehkan anda mengatasi pelaksanaan Kawalan melalui mekanisme seperti suntikan pergantungan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Nilai \'ini\' Semasa Menyusun Kod Berasaskan Prototaip JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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