【问题标题】:What does {x:1} do in Javascript?{x:1} 在 Javascript 中做了什么?
【发布时间】:2011-10-21 15:35:52
【问题描述】:

来自 Javascript:权威指南,

var o = { x:1 }; // Start with an object
o.x = 2; // Mutate it by changing the value of a property
o.y = 3; // Mutate it again by adding a new property

{ x: 1} 在这里做什么?有了大括号,它让我想起了函数(或对象,构造函数)。谁能详细说明一下,谢谢。

另一个相关问题是:

({x:1, y:2}).toString() // => "[object Object]"

我也觉得这个问题很有趣。 上面代码中的object和Object有什么区别?实际上,我们什么时候使用Object?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    它将变量o 变成一个包含一个属性(x) 的对象,并将该属性的值设置为1。

    编辑

    明确地说,正如您所演示的,您没有以这种方式添加属性。您可以简单地通过分配对象来创建一个属性 (o.y = "Awesomesauce")

    关于您的相关问题; {x:1, y:2} 只是一个对象字面量,具有两个属性 x 和 y,其值分别为 1 和 2。操作这个对象字面量就像操作一个原始值字面量 (console.log("my,string".split(",")))。

    "[object Object]" 就是非特定类型对象以字符串形式表示的方式。

    编辑 2

    根据您的评论:小写的“对象”是类型。 typeof o 将给 object。对象(大写“O”)只是{x:1} 的字符串表示形式。数组或数字的字符串表示是“智能的”,因为它更具体地知道类型。使用自定义对象,如o,它只是一个通用对象,因此写成:object (the type) Object (a string representation of o itself)

    【讨论】:

    • 谢德尔谢谢。很好的答案。现在让我感到困惑的是“对象与对象”。 x 是属性是对象吗?使用大写的 Object,它与 object 有何不同?谢谢!
    • 其实。对象是 {x:1},对象是 1,对吗?由于 Number(1) 返回对象,所以 Object(1) 返回对象(使用 typeof)......这里有点混淆。
    【解决方案2】:

    它被称为 object initializer(至少在 C# 中)。它创建了一个新对象o,并直接启动属性x,其值为1

    【讨论】:

    【解决方案3】:

    它是一个 JSON 对象,一个关联数组。关键是“x”;值为 1。

    【讨论】:

    • 不要混淆对象文字语法,与 JSON 数据交换格式,他们有differences
    • @CMS +1。它实际上只是一个 JavaScript 对象。 Crockford 在创建 JavaScript 很久、很久、很久之后才引入了 JSON 一词。无论如何,字符串{x:1} 在 JSON 中是完全非法的。 JSON 要求键被双引号引起来。查看官方语法:json.org.
    【解决方案4】:

    您已经对问题的第一部分有了答案。

    对于第二部分,您调用了存储在Object.prototype 中的toString() 方法。

    为了好玩,试试这个:

    JSON.stringify({x:1, y:2})
    

    【讨论】:

      猜你喜欢
      • 2015-07-04
      • 2019-07-02
      • 1970-01-01
      • 2012-02-12
      • 2011-07-24
      • 2015-10-01
      • 1970-01-01
      • 2013-04-09
      相关资源
      最近更新 更多