使从Object.create创建的对象具有正确的Object.prototype.toString

时间:2014-10-22 18:25:51

标签: javascript arrays object

我的印象是使用了Object.create,非常适合创建具有指定原型的对象。例如,我遇到了这个问题:

var arr = Object.create(Array.prototype);
console.log(arr instanceof Array); // true
console.log(Array.isArray(arr)); // false
console.log(Object.prototype.toString.call(arr)); // [object Object] 

var trueArr = [];
console.log(trueArr instanceof Array); // true
console.log(Array.isArray(trueArr)); // true
console.log(Object.prototype.toString.call(trueArr)); // [object Array] 

正如您所看到的,Array.isArray调用在从Object.create创建的arr上失败,这是因为在内部,Array.isArray调用Object.prototype.toString.call(arr),它是[object Object]而不是[object Array]。我的问题是,无论如何要使它从Object.create创建的对象具有所需的Object.prototype.toString行为? (返回[Object Array])

0 个答案:

没有答案