无法访问javascript中对象内部的数组元素的对象属性
我在一个对象中有一个对象数组 为什么会出现下面的错误“无法读取未定义的属性fname”?我怎么修理它 另外,我对javascript还不熟悉,如果有任何样式或惯例方面的建议,我将不胜感激无法访问javascript中对象内部的数组元素的对象属性,javascript,arrays,object,Javascript,Arrays,Object,我在一个对象中有一个对象数组 为什么会出现下面的错误“无法读取未定义的属性fname”?我怎么修理它 另外,我对javascript还不熟悉,如果有任何样式或惯例方面的建议,我将不胜感激 您不需要将X作为myObj的实例。事实上,这就是破坏你的代码的原因。创建myObject的新实例时会创建X,如下所示: var AB = new myObject(); var firstName = AB.X[0].fname; 然后,您将在此AB对象上而不是在X上调用add方法: AB.add('mik
您不需要将X作为myObj的实例。事实上,这就是破坏你的代码的原因。创建myObject的新实例时会创建X,如下所示:
var AB = new myObject();
var firstName = AB.X[0].fname;
然后,您将在此AB对象上而不是在X上调用add方法:
AB.add('mike','smith','toronto');
最后,您将得到如下结果:
var AB = new myObject();
var firstName = AB.X[0].fname;
不过,这是关于为什么要构造这个对象的一个小问题。你怎么知道哪个人的名字和信息出现在X的哪个索引中?也许可以考虑使用一个对象来存储这些数据,并使用一些键来帮助您知道东西在哪里。可能看起来像:
var people = {
"uniqueID": { // some uniqueID
"fname":"mike",
"lname":"smith",
"city":"toronto"
}
}
您的javascript代码有几个问题。首先,您为AB.X分配了一个新的Obj值,而不是简单的AB。然后,您在AB.X上调用add方法,此时正确的调用应该是AB.add-请参见下面的代码示例
function myObj() {
this.X = [],
this.haveEntries = function() {
return this.A.length > 0;
},
this.add = function(fname_in, lname_in, city_in) {
var t = new Date().getTime() / 1000;
var obj = {
fname: fname_in,
lname: lname_in,
city: city_in,
t_create: t
};
this.X.push(obj);
return this;
}
}
var AB = {};
AB = new myObj();
AB.add("mike", 'smith', 'Toronto');
var s = AB.X[0].fname;
使用现有代码,您还可以使用
var s = AB.X.X[0].fname;
在您的示例中,AB.X是myObj的一个实例。我想你的意思是var AB=新的myObj;谢谢简单的错误。仍然期待着对代码的其他评论。我只是使用您的代码为您提供了解决方案。但其他人给出的解决方案是好的。