以不同方式构造的js对象之间的差异

时间:2013-12-29 21:10:30

标签: javascript

以这种方式创建的js对象有什么区别? :

var js = {};
js.first = "blah";
js.second = something;

VS

var js {
first : "blah",
second: something
}

在Chrome检查员中,我没有看到任何问题。将js变量(第一个示例)传递给socket.emit时遇到问题,它在第一种情况下给我空对象,但在第二个例子中工作正常。

我很困惑。

参考:https://stackoverflow.com/questions/20828860/why-cannot-i-pass-object-via-node-js-emit

1 个答案:

答案 0 :(得分:1)

这两种创建新对象的方法完全没有区别。

第一个示例仅显示了如何动态地向现有对象添加新键和值。

如果你试图将它们与==进行比较,你会得到假的,但即使你以类似的方式创建2个对象,你也会得到假的......

var js = {
first : "blah",
second: something
}

var js2 = {
first : "blah",
second: something
}

js == js2 //false

所以它似乎是一些浏览器/节点错误,如果它给你空对象。也许解析器bug?很难说。但没有实际差异