我正在学习 Javascript,但遇到了一些我不明白的事情。这是我的目标代码的一部分:
var monster =
{
...
//is the animation starting?
hiding: true,
delayDuration: Math.floor(Math.random() * 60),
currentDelay: this.delayDuration,
...
};
如果我console.log (delayDuration),我会得到一个值,但如果我console.log (currentDelay),它会显示“未定义”。
我不明白为什么currentDelay不采用delayDuration的值。 有人可以解释一下吗?
编辑:@Bergi 为什么你将其标记为重复?我在其他地方找不到我的问题的答案 edit2:是的,它是重复的。至少现在我知道我要问什么了。
最佳答案
在对象创建时,monster
及其任何属性均未定义。您不能使用正在构建的同一对象中的变量。
此外,Javascript 使用函数作用域,这意味着 this
的值将是 window
对象,或者将作用域限制为您正在使用的最近的实例new
(或其他实例创建技术)。
关于javascript - 为什么我不能将属性值分配给对象声明中的以下属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26990534/