개체 배열을 만든 다음 배열 내에서 개체 속성에 액세스하려고 시도하지만 정의되지 않은 상태로 되돌아옵니다. createObjArray() 함수를 호출하고 console.log (objArray [1])를 수행 한 직후에 호출합니다. 그리고 모든 것을 가진 객체를 출력합니다 ... 속성은 훌륭합니다. 그러나, 나는 console.log (objArray [1] .name); 방화 광구가 "정의되지 않음"을 인쇄합니다. 또한 방화 광에서 코드를 실행하면 objArray [1] .name 위로 마우스를 가져 가면 올바른 이름이 표시됩니다. 여기 무슨 일이 일어나고 있니?개체가 배열 내에있을 때 개체 속성 액세스 (javascript)
var objArray = [];
function createObjectArray(numOfObjs) {
for(var i=0; i<numOfObjs; i++) {
packages.push(initObj(i));
}
}
function initObj(i){
var newPackage;
var p = {};
$.getJSON('.../package' + i + '.json', function(data) {
newPackage = new Package(data);
p.name = newPackage.name;
p.id = i;
});
return p;
}
$ .getJSON이 비동기 호출을하고 있습니까? 그렇다면 initObj 메소드가 리턴 될 때 p는 비게됩니다. –
console.log (arrayObj [1])를 사용하여 객체를 올바르게 인쇄합니다. 다음과 같이 전체 객체를 인쇄합니다 : Object {name = "my name", id = 1}. 그래서 P는 – user1804588
을 두 번 게시합니다. 죄송합니다. – user1804588