在MDN页面Object.assign()中,示例polyfill首先将所有源和目标参数都包装在
文本还提到,在返回目标之前,附加属性直接添加到目标中。但是,在
所有给出的示例都将对象作为参数传递给
Object()
中,然后再迭代属性。 (即Object(target)
,Object(source1)
,Object(source2)
...)。文本还提到,在返回目标之前,附加属性直接添加到目标中。但是,在
Object()
中包装目标会导致一个不同于简单增强属性的对象。 (即Object(target).newProp !== target.newProp
)。所有给出的示例都将对象作为参数传递给
Object.assign()
。因此,非对象源或目标参数的用例不清楚。
A)将参数包装在Object()
中的目的是什么? (我认为Object.keys(x)
与Object.keys(Object(x))
相同。)
B)使用非对象调用Object.assign()
的可能用例是什么(例如:Object.assign(1, 'b', [3], true, function(){})
)?
Object(target)
将目标转换为对象。例如:Object("1234")
将其转换为[object String] {0: "1", 1: "2", 2: "3", 3: "4", length: 4}
。 - MouserObject(target)
和Object(source)
是一种近似(尽管对于* null 和 undefined *来说并不完全相同)。 - RobGA
的属性,但希望让A
保持不变时,您可以将属性复制到B
并更改它们,就像您使用slice
复制数组的一部分一样。 - MouserObject.keys(Object(x))
而不是简单地使用Object.keys(x)
。我错过了什么吗? - Hurelu