请解释一下"Array.push({objectRef})"在JS中实际做了些什么?

ZaL*_*HkA 1 javascript

我意识到这对大多数人来说可能是一个愚蠢的,但由于我甚至不知道这叫什么,我一直无法在网上找到更多的信息.​​.

分享我的代码的过度简化; 在没有真正考虑我在做什么的情况下,我最终得到了类似下面的内容:

var myArray = [];
var firstObject = {...};
var secondObject = {...};

myArray.push({firstObject, secondObject});
Run Code Online (Sandbox Code Playgroud)

在Chrome中,当我检查数组内容时,我有一个完全符合我预期的对象数组.如果我JSON.stringify(myArray),我得到以下内容:

[{"firstObject":{"ping":"pong"},"secondObject":{"ping":"pong"}}]
Run Code Online (Sandbox Code Playgroud)

但是,当其他人在IE中尝试此操作时,它抱怨语法和.push()调用失败.

后来我意识到我真正打算做的是:

myArray.push({
  firstObject: firstObject,
  secondObject: secondObject
});
Run Code Online (Sandbox Code Playgroud)

幸运的是,使用这个数组的代码不需要改变,但我仍然对此感到困惑.有人能指出我的方向吗?这是来自较新的ES6语法吗?

gur*_*dev 7

myArray.push({firstObject, secondObject});
Run Code Online (Sandbox Code Playgroud)

是ES6语法,实际上是desugars:

myArray.push({
  firstObject: firstObject,
  secondObject: secondObject
});
Run Code Online (Sandbox Code Playgroud)

所以IE抱怨,因为它不支持这种新语法.

您可以在这里或在文档中阅读它(以及更多)

  • 链接到[文档](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#New_notations_in_ECMAScript_2015). (2认同)