使用Object.create创建的Javascript数组 - 不是真正的数组?

Phi*_*ier 8 javascript v8 object-create

它看起来像的Object.create创建磁盘阵列走路像数组嘎嘎像数组,但仍然不是真正的数组.至少用v8/node.js.

> a = []
[]
> b = Object.create(Array.prototype)
{}
> a.constructor
[Function: Array]
> b.constructor
[Function: Array]
> a.__proto__
[]
> b.__proto__
[]
> a instanceof Array
true
> b instanceof Array
true
> Object.prototype.toString.call(a)
'[object Array]'
> Object.prototype.toString.call(b)
'[object Object]'
Run Code Online (Sandbox Code Playgroud)

一些Javascript专家可以解释为什么会这样,以及如何使它使我新创建的数组与真正的数组无法区分?

我的目标是克隆数据结构,包括可能附加自定义属性的数组.当然,我可以使用手动将属性附加到新创建的数组Object.defineProperty,但有没有办法使用Object.create

Tim*_*own 5

最简洁的答案是不.本文将详细解释所有内容.