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

How to force javascript Array to inherit from my custom object?

本文关键字:自定义 对象 继承 我的 何强制 javascript 数组      更新时间:2023-09-26

有可能这样做吗?强制标准javascript对象从自定义对象继承?(没有实际用途,只是反问)。

var MyObject=function(){
        this.name="name from MyObject";
      }
Array.prototype=new MyObject();
var array = new Array();
console.log(array.name); //undefined

当然,您可以重新分配Array的原型。但这样做可能会产生可怕的后果。

ECMAScript(JavaScript的基础)对数组做了一些基本假设。我可以想象,ECMAScript的一些实现将禁止重新分配内部类的原型,而其他实现则允许这样做(因为JavaScript的一个同样基本的规则是,任何东西都可以在任何地方、任何时间更改)。

然而,这样做会使数组变得完全不可预测和不可靠。

发生这种情况是因为禁用了对此属性的修改(我认为这是ECMAScript 5规范对本机对象的要求,但找不到任何东西来证明它)。在chrome中运行此查询:

     Object.getOwnPropertyDescriptor(Array, 'prototype')

显示属性的描述符

     Object {
       value: Array[0], 
       writable: false, 
       enumerable: false,
       configurable: false
     }