H5W3
当前位置:H5W3 > 其他技术问题 > 正文

【Web前端问题】实现一个可以继承 Array 的构造函数可行吗?

伪代码如下:

var Constructor = function(arr) {
    // 在这里对传入的数组进行处理
}
var $ = function(arr) {
    return new Constructor(arr);
}
Constructor.prototype = Object.create(Array.prototype);
Constructor.prototype.add = function(item) { ... }

我预期的结果是:$(arr) 作为 Constructor 的实例可以调用自定义的 add() 方法,也可以调用 Array.prototype 上的数组的原生方法。

主要是不希望直接在 Array.prototype 上定义 add() 方法。

arr = [1, 2, 3] 本来是 Array 的实例,但是我希望在 arrArray 中间添加一个构造函数,即 arr 的原型链为 Constructor.prototype ==> Array.prototype

我准备用上面伪代码的方式实现,但是 Constructor 内部不知道怎么处理,或者这种思路根本就是错的,各位大神不要被伪代码影响。

请问可以实现这种功能吗?如果可以,怎么实现?

回答:

class Constructor extends Array {
    constructor() {
        super();
    }
    
    add(item) {
      // TODO: override add method
    }
}

var $ = arr => new Constructor().concat(arr);

回答:

如果仅仅是你描述的要求,直接在$里写
arr.add = function(item){...}
是不是就满足了?

本文地址:H5W3 » 【Web前端问题】实现一个可以继承 Array 的构造函数可行吗?

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址