我正在学习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:是的,这是重复的。至少现在我知道我要问的话。
答案 0 :(得分:2)
在创建对象时,既未定义monster
也未定义任何属性。您不能使用您正在构建的同一个对象中的变量。
此外,Javascript使用函数作用域,这意味着this
的值将是window
对象,或者将限定为使用new
创建的最近的实例(或其他实例创建技术)。