OOO javascript:对象自引用返回undefined但控制台显示它存在

时间:2012-04-03 23:55:45

标签: javascript oop object reference

好的,所以我在发布之前做了一些搜索......没有运气(或者我可能只是愚蠢)。

我有这个数组我叫“myArray”,我把对象推到它上面来填充一些变量:

myArray.push({
    time        : (y.moveTime - y.startTime),
    pos         : y.move,
    last        : myArray[y.recents.length-1].time
});

我的问题是为什么firebug会抱怨“last”变量:“ Uncaught TypeError:无法读取未定义的属性'时间'”。如果我做

last        : myArray[y.recents.length-1]

一切都很好。

我不明白的观察: 引用时,数组为空,但如果删除它,则数组已满。

我在这里缺少什么?我不明白:(

感谢您的任何指示。

2 个答案:

答案 0 :(得分:4)

错误表示评估值为

myArray[y.recents.length-1]

不是具有time属性的对象。当您执行第一个push时可能会发生这种情况,因为该数组还没有任何元素。

如果您想隐藏错误并在这种情况下只将last属性分配给undefined,则只需添加一个后备值:

last: (myArray[y.recents.length - 1] || {}).time 

答案 1 :(得分:0)

myArray[y.recents.length-1]的值可以是任何值(某些字符串,对象,数组,null等)。您可以使用它设置last的值,不会出现任何错误。

但是,如果将属性设置为非对象(如设置time),则会导致错误。