Я пытаюсь написать набор классов, расширяющих 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
.