是否有可能做这样的事情 - 强制标准javascript对象继承自定义对象? (没有实际用途,只是修辞问题)。
var MyObject=function(){
this.name="name from MyObject";
}
Array.prototype=new MyObject();
var array = new Array();
console.log(array.name); //undefined
答案 0 :(得分:1)
当然,您可以重新分配Array的原型。但这样做可能会产生可怕的后果。
ECMAScript(基于JavaScript)对数组做出了一些基本的假设。我认为ECMAScript的某些实现会禁止重新分配内部类的原型,而其他实现则允许它(因为JavaScript的同等基本规则是任何地方都可以随时更改)。
但是,这样做会使Array完全不可预测且不可靠。答案 1 :(得分:0)
这是因为禁用了对此属性的修改(我认为这是本机对象的ECMAScript 5规范的要求,但无法找到任何证明它的东西)。在chrome中运行此查询:
Object.getOwnPropertyDescriptor(Array, 'prototype')
显示属性的描述符
Object {
value: Array[0],
writable: false,
enumerable: false,
configurable: false
}