javascript - 原型(prototype)继承和实例数组的问题

标签 javascript inheritance prototype node.js

我使用原型(prototype)继承并希望拥有带有实例数组的对象。因此,如果我使用实例数组从一个对象派生一些对象并访问该数组,那么所有对象都会共享该数组。我想将某些内容推送到数组中,并且只更改实际对象中的数组,而不更改所有其他对象中的数组。

使用标准原型(prototype)继承和 Object.create 来解决此问题的优雅解决方案是什么?

var sys = require('sys');

var obj ={
    data: [],
    add: function(what){
        this.data.push(what)
    }
};

var one = Object.create(obj);
one.add(1);

var other = Object.create(obj);
other.add(2);

sys.puts(other.data.length); // is 2, but should be 1

最佳答案

var ObjectName = function(){
    this.data = [];
}

ObjectName.prototype.add = function(what){
    this.data.push(what);
};

var one = new ObjectName();
one.add(1);

关于javascript - 原型(prototype)继承和实例数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3354143/

相关文章:

Scala - 将特征与其导入混合(继承导入)

javascript - 添加事件监听器后的原型(prototype)继承问题

c# - 释放 JavaScript 的 ActiveXObject()?

javascript - 为什么在此示例中放弃 'this' 是有益的

javascript - JS星级如何获取MYSQL的<span>值?

java - 对于这个项目来说,扩展还是继承更好?

ruby - 在 Go 中建模 "superclass method implementation"的最佳方法是什么?

javascript - Object.watch() 适用于所有浏览器?

function - D 编译时函数类型提取

JavaScript DRY 对象构造函数