Javascript Arrays creados con Object.create: ¿no son matrices reales?

Parece que las matrices creadas con Object.create walk como Arrays y graznan como Arrays, pero todavía no son matrices reales. Al menos con 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]'

¿Puede algún gurú de Javascript explicar por qué es así y cómo hacer que mi matriz recién creada sea indistinguible de una matriz real?

Mi objetivo aquí es clonar estructuras de datos, incluidas matrices que pueden tener propiedades personalizadas adjuntas. Podría, por supuesto, adjuntar manualmente propiedades a una matriz recién creada usandoObject.defineProperty, pero ¿hay alguna manera de hacerlo usandoObject.create?

Respuestas a la pregunta(4)

Su respuesta a la pregunta