JavaScript:对象构造与对象参数

时间:2017-11-25 07:00:01

标签: javascript object constructor

我看过一些代码如下:

var thing=Object(stuff);    //  stuff is an object

其中stuff是一个对象。

(我在Mozilla的网站上看到了Object.assign的polyfill中的这种代码。

如果参数是对象,Mozilla的文档并不具体说明。

据我所知,新对象是对原始对象的引用。如果您只是简单地写道,我认为你会得到同样的结果:

var thing=stuff;    //  stuff is an object

两者有什么区别?

修改

我需要说出来吗?这关于Object.assign的问题。这是关于使用Object构造函数的问题。

2 个答案:

答案 0 :(得分:0)

文字和对象()之间的区别 -

  

Object构造函数为给定值创建一个对象包装器。   如果值为null或未定义,则将创建并返回空值   对象,否则,它将返回对应的Type对象   到给定的值。如果该值已经是一个对象,它将返回   价值。

     

在非构造函数上下文中调用时,Object的行为相同   到新的Object()。 -   from MDN

如果使用Object,则可以插入任何值并获取新对象,但如果使用object作为Object的参数,则可以获得此对象的链接。 如果Bitmap是对象,则stuffvar 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"}