Не могу понять. На MDN пишут, что:
Длительное время поиска свойств, располагающихся относительно высоко в цепочке прототипов, может негативно сказаться на производительности (performance), особенно в критических в этом смысле местах кода. Кроме того, попытка найти несуществующие свойства неизбежно приведёт к проверке на их наличие у всех объектов цепочки прототипов.
hasOwnProperty — единственная существующая в JavaScript возможность работать со свойствами, не затрагивая цепочку прототипов.
Но ведь hasOwnProperty наследуемый метод, причем от Object.prototype, а значит при вызове происходит его поиск по всей цепочке, до Object.prototype от которого он наследуется. Или что-то я не пойму?
Какая разница, искать свойство без hasOwnProperty, и тем самым, есть вероятность долгого прохода через всю цепочку прототипов. Или с hasOwnProperty, и в таком случает обязательно проходить через всю цепочку, чтобы воспользоваться им, а уже с помощью него искать только собственное свойство объекта. Объясните пожалуйста какой профит со стороны производительности?
Ссылка на статью < < <
Теоретически — если представить себе случай с очень длинной цепочкой прототипов, в котором крайне критична производительность, то можно делать так:
if (Object.prototype.hasOwnProperty.call(obj, 'prop')) {
// obj имеет собственное свойство prop
}
Такой вызов метода hasOwnProperty не будет проходить по цепочке прототипов obj.
Практически же заниматься подобными микрооптимизациями нет никакого резона до тех пор, пока нет данных профилирования, явно указывающих, что проблема в этом. В целом современные движки хорошо оптимизируют поиск по цепочке прототипов (т. к. это очень критично для производительности JS).
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Вот есть код в чате с формой и отправкой аякс запроса по нажатию на кнопкуНО увы ничего не происходит
При написании скрипта на плавное прокручивание блоков сайта (По-типу fullpagejs) возникла проблема