Почему arr = [] быстрее, чем arr = new Array?

Поведение setInterval по умолчанию - это привязка к глобальному контексту. Вы можете вызвать функцию-член, сохранив копию текущего контекста. Внутри retrieve_rate переменная this будет правильно привязана к исходному контексту. Вот как выглядит ваш код:

var self = this;
this.intervalID = setInterval(
    function() { self.retrieve_rate(); },
    this.INTERVAL);

Бонусный совет: для простой ссылки на функцию (в отличие от ссылки на объект, которая имеет функцию-член) вы можете изменить контекст с помощью JavaScript call или apply.

143
задан Community 23 May 2017 в 12:25
поделиться

1 ответ

Кроме того, интересный, если длина массива известна заранее (элементы будут добавлены сразу после создания), использование конструктор Array с указанным длина очень быстрее на недавнем Google Chrome.

  • " новый Массив ( %ARR_LENGTH % ) " †“100% (быстрее) !

  • " [] " †“167% (медленнее)

enter image description here

тест может быть найден здесь - https://jsperf.com/small-arr-init-with-known-length-brackets-vs-new-array /

Примечание: этот результат протестирован на Google Chrome v.77 ; в Firefox v.70 оба варианта почти равняются.

1
ответ дан 23 November 2019 в 22:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: