Javascript 数组不';不能正确填写
我有以下JavaScript实体:Item和ItemsJavascript 数组不';不能正确填写,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]
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
你说得对,我注意到了这一点,但不幸的是,这并没有解决我的问题。还有一件事我找不到。你的项目
类也有同样的问题。我希望你能把我对项的回答也投射到另一个类上。我只是想给你指出正确的方向,而不是作为完整的代码给你答案。非常感谢!我没注意到!