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

标签 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),它会显示“未定义”。

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

编辑:@Bergi 为什么你将其标记为重复?我在其他地方找不到我的问题的答案 edit2:是的,它是重复的。至少现在我知道我要问什么了。

最佳答案

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

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

关于javascript - 为什么我不能将属性值分配给对象声明中的以下属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26990534/

相关文章:

php - 创建过于简单的功能是不是不好的风格?

javascript - 正确带 child 的方法

javascript - 无需 Javascript 自动运行 POST 表单

javascript - 如何设置一个对象(object)的默认属性?

javascript - 从嵌套对象生成 TypeScript 类型

objective-c - Objective-C 中属性覆盖的危害是什么?

javascript - Firebase token.email_verified 变得奇怪

c# 将字段与 get 和 set 方法结合使用与使用属性

javascript - 我可以在 React.js 中更新组件的 props 吗?

java - 如何将 List<Object> 转换为 List<MyClass>?