[英]Can't access a object property of an array element, inside a object in javascript
我在對象內部有一個對象數組。
為什么在下面出現錯誤“無法讀取未定義的屬性fname”? 我如何解決它?
另外,我是javascript新手,不勝感激任何樣式或約定的建議。
https://jsfiddle.net/go1eu9z6/
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.X = new myObj();
AB.X.add("mike", 'smith', 'Toronto');
var s = AB.X[0].fname; // Error: Cannot read property fname of undefined
document.getElementById('fname').innerHTML = s
您的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;
您無需將X設為myObj的實例。 實際上,這就是破壞您的代碼的原因。 當創建myObject的新實例時將創建X,如下所示:
var AB = new myObject();
然后,您將在此AB對象而不是X上調用add()方法:
AB.add('mike','smith','toronto');
最后,您將得到如下結果:
var firstName = AB.X[0].fname;
但是,這只是為什么要構造此對象的一些回旋。 您如何知道哪個人的名字和信息出現在X的哪個索引處? 也許要研究使用對象通過一些密鑰來存儲此數據,以幫助您了解東西在哪里。 可能看起來像:
var people = {
"uniqueID": { // some uniqueID
"fname":"mike",
"lname":"smith",
"city":"toronto"
}
}
與您現有的代碼,您也可以通過使用
var s = AB.X.X[0].fname;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.