Javascript对象强制引用键

Javascript对象强制引用键,javascript,json,Javascript,Json,很多问题都会问,它们之间的区别是什么 obj = {"foo" : "bar"} 及 答案是引号是正确的JSON语法,而没有引号是Javascript语法糖。我的问题是,我如何处理任何未引用/半引用的javascript对象,即: semi = { "foo" : "bar", hello: "world"} fully = { "foo" : "bar", "hello": "world" } 并返回一个完全引用的对象,即: semi = { "foo" : "bar", hello:

很多问题都会问,它们之间的区别是什么

obj = {"foo" : "bar"} 


答案是引号是正确的JSON语法,而没有引号是Javascript语法糖。我的问题是,我如何处理任何未引用/半引用的javascript对象,即:

semi = { "foo" : "bar", hello: "world"}
fully = { "foo" : "bar", "hello": "world" }
并返回一个完全引用的对象,即:

semi = { "foo" : "bar", hello: "world"}
fully = { "foo" : "bar", "hello": "world" }

在Javascript中。我不是说JSON.stringify(),因为它会返回一个字符串,我仍然想要一个普通的JS对象。谢谢

Javascript解释器在显示属性时,仅当属性包含破折号、空格或其他特殊字符时才引用属性

Javascript对象与JSON不同。它们看起来可能非常相似,但JSON是javascript对象的字符串表示形式,而javascript对象具有带有属性名称的实际属性。这就是为什么可以使用点语法访问这些属性

console.log( semi.foo );

带引号的字符串表示只是为了视觉效果,而不是它们在内部的表示方式。

JavaScript对象键不是带引号的字符串:它们只是原始字符串值

源代码中的键定义使用

{ unquotedKey:  "some value" }
作为对象初始化器,使用键值对创建和初始化对象。但是,该语法确实需要
unquotedKey
来符合的规则

源代码中的键定义使用

{ "quoted value!": "some value" }
一种创建对象的方法,该对象的键不符合JavaScript标识符的规则

当使用速记点符号访问JavaScript属性名称时,同样的限制也适用:
foo.bar
有效,因为
bar
是一个标识符,但是
foo[“was here”]
需要数组查找符号,因为
was here
不是标识符


现在输入
JSON.stringify
。默认情况下,
stringify
方法引用所有属性名,以便在系统和编程语言之间交换对象的字符串表示形式。从
JSON.stringiy
的行为推断带引号的标识符名称在某种程度上更好,或者说是用JavaScript编写对象文本的正确方法,其属性名称设计用于编程访问,这是一种误解。

您的目的是什么?在js中,两者的解释方式相同。我的意思是,你的半实物和全实物在所有测量中都是一样的,你可以从你的身上寻找安慰。你的问题没有任何意义。字符串或标识符的使用仅存在于JavaScript源代码中。从中得到的对象只是一个具有属性的对象。用于构造它的语法是不相关的。您无法从对象中获取原始源代码。
semi
full
的值完全相等;引用键的使用只是一个语法问题,不会影响结果对象。为什么要这样做?“答案是引号是正确的JSON语法”-不。答案是“没有区别”(因为你没有写JSON,所以JSON是不相关的…如果你写JSON,那么
obj=
将使它无效)JavaScript对象的属性没有引号或没有引号。该引号仅用于JavaScript引擎解析代码时的语法。因此,你所问的没有意义。