扩展Array类时如何覆盖构造函数?

时间:2017-01-27 15:00:50

标签: javascript class function-overriding

我想创建一个名为Matrix4的扩展Float32Array的类。我希望能够使用构造函数覆盖Float32Array构造函数,该构造函数创建一个包含16个元素的数组(通常我会调用new Float32Array(16),但现在我只想要new Matrix4)。

// This function should override the Float32Array constructor
// And create a Matrix4 object with the size of 16 elements
var Matrix4 = function() {
    Float32Array.call(this, 16);
};

Matrix4.prototype = new Float32Array;

我从这段代码得到的错误是:

Constructor Float32Array requires 'new'

1 个答案:

答案 0 :(得分:3)

您无法使用老式的ES6前语法扩展内置对象,如ArrayFloat32Array。唯一的方法是使用a class..extends statement

class Matrix4 extends Float32Array {
    constructor() {
        super(16);
    }
}

let matrix = new Matrix4;
console.log(matrix.length); // 16