这是一个例子:

var Box = function() {
    this.id = generateUniqueId();
};
Box.prototype = {
    add:function(parent) {
        parent.appendChild(this.elm);
    }
};

var NewBox = function() {
    this.newThing = true;
};
NewBox.prototype = new Box();
NewBox.prototype.remove = function() {
    this.elm.parentNode.removeChild(this.elm);
};

var a = new NewBox();
var b = new NewBox();
alert(a.id); // alerts 0
alert(b.id); // also alerts 0! :@


我希望a和b(基本上每次创建NewBox时)都有自己的id。我知道NewBox正在使用原型继承,因此是从id生成的Box的单个实例继承,但是我希望每个NewBox都拥有自己的id必须在NewBox构造函数中明确指出。

也许这是不可能的,或者我做错了什么,所以请帮助!

非常感谢!

最佳答案

也许这是不可能的,或者我做错了什么,所以请帮助!


你做错了

如果需要特定于实例的值,请在构造函数而不是原型中初始化它们。

关于javascript - JavaScript原型(prototype)继承解决方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7682034/

10-12 07:18