首页  >  文章  >  web前端  >  如何在保留'this”引用和继承的同时组织 JavaScript 原型?

如何在保留'this”引用和继承的同时组织 JavaScript 原型?

Susan Sarandon
Susan Sarandon原创
2024-11-23 00:58:11893浏览

How Can I Organize JavaScript Prototypes While Preserving

使用保留的引用和继承组织 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn