Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menyusun Prototaip JavaScript Semasa Memelihara Rujukan dan Warisan \'ini\'?

Bagaimanakah Saya Boleh Menyusun Prototaip JavaScript Semasa Memelihara Rujukan dan Warisan \'ini\'?

Susan Sarandon
Susan Sarandonasal
2024-11-23 00:58:11963semak imbas

How Can I Organize JavaScript Prototypes While Preserving

Mengatur Prototaip JavaScript dengan Rujukan dan Warisan Terpelihara

Untuk menyusun kod dengan berkesan apabila menggunakan prototaip dan warisan JavaScript, isu biasa timbul dengan kehilangan daripada nilai "ini" dalam prototaip tersuai. Dalam masalah ini, tujuannya adalah untuk menyusun kod dengan membahagikan fungsi ke dalam objek bersarang sambil mengekalkan rujukan dan warisan.

Penyelesaian Cadangan:

Satu pendekatan untuk menyelesaikan isu ini ialah untuk mencipta kelas khusus untuk fungsi yang dipersoalkan dan bukannya menyarangkannya secara langsung dalam prototaip sendiri.

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

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

Dengan mentakrifkan Kawalan sebagai kelas berasingan, rujukan "ini" kekal utuh walaupun dalam prototaip tersuai. Walau bagaimanapun, penyelesaian ini disertakan dengan pengehadan untuk tidak membenarkan pelaksanaan Kawalan dibatalkan.

Penyelesaian Suntikan Kebergantungan:

Untuk membolehkan penetapan pelaksanaan Kawalan, a pendekatan suntikan pergantungan boleh digunakan:

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

var Carousel = function () {
    this.controllers = [];
};
Carousel.prototype.addController = function (controller) {
    this.controllers.push(controller);
};
// ..

var carousel = new Carousel();
carousel.addController(new Controls(carousel));

Penyelesaian ini memberikan fleksibiliti dengan membenarkan penambahan dinamik dan pengubahsuaian pengawal, membolehkan penggantian terpilih fungsi dalam kelas yang diwarisi.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyusun Prototaip JavaScript Semasa Memelihara Rujukan dan Warisan 'ini'?. 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