我正在尝试编写一组扩展Float32Array
的类,但是当它在Firefox中运行时,当我尝试使用该对象时,该类的构造函数会再次被调用。
此脚本演示了错误:
"use strict";
class ARRAYty extends Float32Array {
constructor(...a) {
console.log('ARRAYty', ...a);
super(10);
}
}
var v = new ARRAYty();
console.log('V constructed');
console.log(v);
console.log(v);
在Firefox中,控制台显示
ARRAYty
V constructed
ARRAYty ArrayBuffer{} 0 10
Float32Array(10) [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
ARRAYty ArrayBuffer{} 0 10
Float32Array(10) [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
每次v
初始化后,我都会再次调用构造函数(传递给它的三个参数似乎是Float32Array
对象的内部组件。构造函数应该仅是调用new ARRAYty()
时被调用一次。
有人可以看到为什么会这样吗?是Firefox实现中的错误/怪癖,还是我应该采取其他措施来避免这种情况?
在Chrome或Edge中不会发生这种情况,如果我将Float32Array
替换为Array
也不会发生。