好的,所以我一直在想办法让普通的旧 Javascript 像许多其他 OOP 语言一样具有某种扩展继承。但是我遇到了一个特定的问题,当一个类使用原型扩展父类时,该对象的每个子级共享变量而不是拥有自己的父级新实例。例如:
TestB.prototype = new TestA();
function TestB(){ }
function TestA(){
var num = 0;
this.count = function(){
num ++;
console.log(num);
}
}
var test = new TestB();
test.count();
var test2 = new TestB();
test2.count();
所以当代码运行时,控制台看起来像这样:
1
2
我希望从父类继承的“num”变量对于每个实例都是唯一的,因此输出应该是:
1
1
我假设会发生这种情况,因为当调用原型时,它只创建一个新的 TestA 实例,而不是每次调用 TestB 的构造函数时创建一个。问题是我还没有找到另一种方法让它工作?
感谢您的帮助(请注意,这实际上是为了更具体的用途,但我只是想创建一个超级简单的测试用例来清楚地说明问题。我没有使用外部库(如 jQuery 或prototype.js)的自由解决问题)