Memelihara Rujukan dan Warisan Objek dalam Prototaip JavaScript
Apabila mengatur aplikasi besar yang dibina menggunakan prototaip dan warisan JavaScript, ia menjadi penting untuk mengekalkan struktur kod sambil memastikan rujukan objek dan warisan adalah utuh. Sebagai contoh, jika kita mempunyai Karusel kelas dengan pelbagai fungsi seperti next(), prev(), dan bindControls(), kita mungkin ingin mengaturnya seperti ini:
Carousel.prototype.controls = { next: function () { ... } , prev: function() { ... }, bindControls: function () { .. } }
Walau bagaimanapun, pendekatan ini menjejaskan nilai "ini", yang memegang konteks objek di mana kaedah digunakan. Untuk menangani isu ini, kami boleh mempertimbangkan untuk membuat Controls sebagai kelas yang berasingan:
var Controls = function (controllable_object) { this.ref = controllable_object; }; Controls.prototype.next = function () { this.ref.foo(); }
Ini memastikan rujukan kepada objek asal dikekalkan walaupun apabila mengatasi fungsi next() dalam kelas terbitan seperti BigCarousel.
BigCarousel.prototype.next = function () { this.controls.next(); }
Sebagai alternatif, anda boleh menggunakan pendekatan suntikan pergantungan untuk memisahkan logik:
var Controls = function () {}; Controls.prototype.next = function (ref) { ref.foo(); } var Carousel = function () { this.controls = new Controls(); };
Kaedah ini memberikan fleksibiliti yang lebih besar untuk menambah pengawal tersuai kemudian. Dengan mengasingkan kebimbangan, anda boleh mengekalkan pangkalan kod yang bersih dan boleh diperluaskan sambil mengekalkan rujukan objek dan warisan.
Atas ialah kandungan terperinci Bagaimanakah Prototaip JavaScript Boleh Mengekalkan Rujukan dan Warisan Objek dalam Aplikasi Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!