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]'
Javascriptの第一人者が、その理由と、新しく作成した配列を実際の配列と区別できないようにする方法を説明できますか?
ここでの私の目標は、カスタムプロパティがアタッチされている可能性のある配列を含むデータ構造のクローンを作成することです。もちろん、を使用して新しく作成された配列にプロパティを手動でアタッチすることもできますが、をObject.defineProperty
使用してそれを行う方法はありObject.create
ますか?