gpt4 book ai didi

javascript - 你如何在 JavaScript 中进行继承而不在子类的所有实例之间共享父类(super class)的同一个实例?

转载 作者:数据小太阳 更新时间:2023-10-29 05:13:28 25 4
gpt4 key购买 nike

我注意到每个关于如何进行 JavaScript 继承的教程都是这样做的:

SubClass.prototype = new SuperClass();

但这将创建父类(super class)的单个实例并在子类的所有实例之间共享它。

问题是我想将参数传递给父类(super class)构造函数,这些构造函数源自传递给子类的参数。

在 Java 中,这将像这样完成:

class SubClass extends SuperClass {
public SubClass(String s) {
super(s);
}
}

我试过这样做:

function SubClass(args) {
this.constructor.prototype = new SuperClass(args);
}

但这行不通。那么有没有办法在 JavaScript 中做到这一点?

最佳答案

一个常见的模式如下:

创建了一个临时构造函数,它继承自父构造函数的原型(prototype)。然后将子构造函数的原型(prototype)设置为临时构造函数的实例。

function inherits(Child, Parent) {
var Tmp = function() {};
Tmp.prototype = Parent.prototype;
Child.prototype = new Tmp();
Child.prototype.constructor = Child;
}

在子构造函数中,您必须调用父构造函数:

function Child(a, b, c) {
Parent.call(this, a, b);
}

inherits(Child, Parent);

// add prototype properties here

在这个函数调用中,this 将引用当您调用 new Child() 时创建的新对象,因此,无论在 中执行什么初始化Parent,它应用于我们传递的新对象。

关于javascript - 你如何在 JavaScript 中进行继承而不在子类的所有实例之间共享父类(super class)的同一个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8736173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com