Конструктор класса, расширяющего Float32Array, вызывается снова после создания объекта - PullRequest
1 голос
/ 19 апреля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...