我的印象是使用了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])