如何强制javascript数组继承自我的自定义对象?

时间:2014-09-26 19:41:19

标签: javascript inheritance

是否有可能做这样的事情 - 强制标准javascript对象继承自定义对象? (没有实际用途,只是修辞问题)。

var MyObject=function(){
        this.name="name from MyObject";
      }

Array.prototype=new MyObject();
var array = new Array();
console.log(array.name); //undefined

2 个答案:

答案 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
     }