Rumah > Artikel > hujung hadapan web > Bagaimanakah Saya Boleh Menyusun Prototaip JavaScript Semasa Memelihara Rujukan dan Warisan \'ini\'?
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!