Javascript 数组不';不能正确填写

Javascript 数组不';不能正确填写,javascript,node.js,Javascript,Node.js,我有以下JavaScript实体:Item和Items var exports = {}; exports.Item = function(item) { if (item) { for (var attr in this.attributes) { var value = item[attr]; if (value !== undefined) { this.attributes[attr]

我有以下JavaScript实体:Item和Items

var exports = {};
exports.Item = function(item) {
    if (item) {
        for (var attr in this.attributes) {
            var value = item[attr];
            if (value !== undefined) {
                this.attributes[attr] = value;
            }
        }
    }
    return this;
};

exports.Item.prototype.attributes = {
    _id: "",
    title: ""
};

exports.Items = function(items) {
    if (items && items.length > 0) {
        for (var i = 0; i < items.length; i++) {
            this.add(items[i]);
        }
    }
};

exports.Items.prototype.arr = [];
exports.Items.prototype.add = function(item) {
    if (item) {
        item = new exports.Item(item);
        this.arr.push(item.attributes);
    }
};
exports.Items.prototype.toJSON = function() {
    var json = [];
    for (var i = 0; i < this.arr.length; i++) {
        json.push(this.arr[i]);
    }
    return json;
};

var i1 = new exports.Item({
    _id: "1",
    title: "1"
});

var i2 = new exports.Item({
    _id: "2",
    title: "2"
});

var i3 = new exports.Item({
    _id: "3",
    title: "3"
});

var items = new exports.Items([i1,i2,i3]);
console.log(items.toJSON());
var exports={};
exports.Item=函数(Item){
如果(项目){
for(此.attributes中的var attr){
var值=项目[attr];
如果(值!==未定义){
this.attributes[attr]=值;
}
}
}
归还这个;
};
exports.Item.prototype.attributes={
_id:“”,
标题:“
};
exports.Items=函数(Items){
如果(items&&items.length>0){
对于(变量i=0;i
有一个问题我找不到。当我执行以下代码时,我得到最后一个项目3次,而不是所有项目。

我确信这个错误很小,我看不出来。也许你能帮我

成员变量不应在原型中初始化。原型变量将在所有实例中共享。相反,在构造函数中定义成员。因此,与此相反:

exports.Items.prototype.arr = [];
这样做:

exports.Items = function(items) {
    this.arr = []; // instance variable

    if (items && items.length > 0) {
        for (var i = 0; i < items.length; i++) {
            this.add(items[i]);
        }
    }
};
exports.Items=函数(项){
this.arr=[];//实例变量
如果(items&&items.length>0){
对于(变量i=0;i
你说得对,我注意到了这一点,但不幸的是,这并没有解决我的问题。还有一件事我找不到。你的
项目
类也有同样的问题。我希望你能把我对
项的回答也投射到另一个类上。我只是想给你指出正确的方向,而不是作为完整的代码给你答案。非常感谢!我没注意到!