为什么我不能将属性值赋给对象声明中的以下属性?

时间:2014-11-18 09:16:59

标签: javascript object properties

我正在学习Javascript而且我遇到了一些我不理解的东西。这是我的目标代码的一部分:

var monster =
{
    ...

    //is the animation starting?
    hiding: true,
    delayDuration: Math.floor(Math.random() * 60),
    currentDelay: this.delayDuration,


    ...
};

如果我是console.log(delayDuration),我得到一个值,但是如果我是console.log(currentDelay),它会显示'undefined'。

我不明白为什么currentDelay不接受delayDuration的值。 有人可以解释一下吗?

编辑:@Bergi你为什么把它标记为重复?我无法在其他地方找到我的问题 edit2:是的,这是重复的。至少现在我知道我要问的话。

1 个答案:

答案 0 :(得分:2)

在创建对象时,既未定义monster也未定义任何属性。您不能使用您正在构建的同一个对象中的变量。

此外,Javascript使用函数作用域,这意味着this的值将是window对象,或者将限定为使用new创建的最近的实例(或其他实例创建技术)。