以这种方式创建的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
答案 0 :(得分:1)
这两种创建新对象的方法完全没有区别。
第一个示例仅显示了如何动态地向现有对象添加新键和值。
如果你试图将它们与==进行比较,你会得到假的,但即使你以类似的方式创建2个对象,你也会得到假的......
var js = {
first : "blah",
second: something
}
var js2 = {
first : "blah",
second: something
}
js == js2 //false
所以它似乎是一些浏览器/节点错误,如果它给你空对象。也许解析器bug?很难说。但没有实际差异