为什么可以';Javascript中的另一个对象初始值设定项中是否有一个对象初始值设定项?

为什么可以';Javascript中的另一个对象初始值设定项中是否有一个对象初始值设定项?,javascript,Javascript,我有下面的代码,想知道为什么不允许我在另一个对象中创建另一个对象 代码 //Object initializer var shoe = { size: 10, make: var maketype = { this.brand: "rebook" }, availability: "now" } 你可以做得很好。额外的var maketype=

我有下面的代码,想知道为什么不允许我在另一个对象中创建另一个对象

代码

//Object initializer
    var shoe = {
            size: 10,
            make: var maketype = {
                this.brand: "rebook"
            },
            availability: "now"
        }

你可以做得很好。额外的
var maketype=
是非法的(并且
this
作为属性名的一部分)

这项工作:

var shoe = {
        size: 10,
        make: {
            brand: "rebook"
        },
        availability: "now"
    }
如果要保留对
make
的单独引用,可以这样做:

var maketype = { brand: "reebok" },
    shoe = {
        size: 10,
        make: maketype,
        availability: "now"
    }

如果我删除
var
我会得到错误
SyntaxError:Unexpected token.
this.brand:“rebook”
@PeanutsMonkey:
这个
在该上下文中也是非法的。编辑以澄清。所以我不能在对象初始值设定项中使用此?这是否意味着
仅限于构造函数?@PeanutsMonkey:Yes和no(它可用于所有函数,也可用于全局上下文)。请参见@PeanutsMonkey-
是执行上下文的只读属性,它始终有一个值。在ECMAScript Ed 3中,它总是引用一个对象,在ES5严格模式下,它可能是
null
未定义的
。您可以通过调用函数的方式(即,在进入执行上下文时)设置它的值,但一旦进入执行上下文,就不能更改它。因此,在全局代码中,<>代码> 总是引用全局对象。考虑使用JavaScript验证器,例如。您的代码根本无效。@不是吗?我已经运行了我的代码,但我从错误列表中永远不会知道
var
在对象初始值设定项中使用是非法的“预期标识符,而不是看到了'var'”…似乎非常直截了当。无论如何,验证器是非常有用的。@我不是吗?可能我对Javascript的世界比较陌生,不理解
“预期的标识符,相反,看到'var'
将等同于使用它是非法的。但将来肯定会使用jshint.com来测试我的代码。