使用保留的引用和继承组织 JavaScript 原型
为了在使用 JavaScript 原型和继承时有效地组织代码,会出现一个常见问题:丢失定制原型中的“this”值。在这个问题中,目的是通过将功能划分为嵌套对象来组织代码,同时维护引用和继承。
建议的解决方案:
解决此问题的一种方法是为相关功能创建专用类,而不是将其直接嵌套在原型本身中。
var Controls = function (controllable_object) { this.ref = controllable_object; }; Controls.prototype.next = function () { this.ref.foo(); } // .. var Carousel = function () { this.controls = new Controls(this); }; // ..
通过定义作为一个单独的类的控件,即使在自定义原型中,“this”引用也保持不变。但是,此解决方案存在不允许重写 Controls 实现的限制。
依赖注入解决方案:
要启用 Controls 实现的重写,可以采用依赖注入方法:
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));
该解决方案通过允许动态添加和修改来提供灵活性控制器,可以选择性地覆盖继承类中的功能。
以上是如何在保留'this”引用和继承的同时组织 JavaScript 原型?的详细内容。更多信息请关注PHP中文网其他相关文章!