如何在扩展数组类时重写构造函数



我想创建一个名为 Matrix4 的类来扩展Float32Array .我希望能够用创建一个包含 16 个元素的数组的构造函数覆盖 Float32Array 构造函数(通常我会调用 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'

不能使用老式的 ES6 之前的语法扩展 ArrayFloat32Array 等内置对象。唯一的方法是使用class..extends语句:

class Matrix4 extends Float32Array {
    constructor() {
        super(16);
    }
}
let matrix = new Matrix4;
console.log(matrix.length); // 16

最新更新