我看过一些代码如下:
var thing=Object(stuff); // stuff is an object
其中stuff
是一个对象。
(我在Mozilla的网站上看到了Object.assign
的polyfill中的这种代码。
如果参数是对象,Mozilla的文档并不具体说明。
据我所知,新对象是对原始对象的引用。如果您只是简单地写道,我认为你会得到同样的结果:
var thing=stuff; // stuff is an object
两者有什么区别?
修改
我需要说出来吗?这不关于Object.assign
的问题。这是关于使用Object
构造函数的问题。
答案 0 :(得分:0)
文字和对象()之间的区别 -
Object构造函数为给定值创建一个对象包装器。 如果值为null或未定义,则将创建并返回空值 对象,否则,它将返回对应的Type对象 到给定的值。如果该值已经是一个对象,它将返回 价值。
在非构造函数上下文中调用时,Object的行为相同 到新的Object()。 - from MDN
如果使用Object,则可以插入任何值并获取新对象,但如果使用object作为Object的参数,则可以获得此对象的链接。
如果Bitmap
是对象,则stuff
和var thing=Object(stuff);
是等效的,否则如果stuf例如是数字:
var thing=stuff;
---对象;
var thing=Object(stuff);
---数字;
答案 1 :(得分:-1)
Object.assign
的polyfill允许我们一次合并多个对象。
你创建一个新对象的观点是正确的,但是有不同的用例。
考虑我们有3个对象,我们想合并它们:
const a = { 'key1': 'value1' };
const b = { 'key2': 'value2', 'key3': 'this will get replaced' };
const c = { 'key3': 'value3' };
// Using Object.assign
const abc = Object.assign(a, b, c);
// abc will have the value {key1: "value1", key2: "value2", key3: "value3"}