Есть и другие примеры, но для простоты возьмем свойство length
, что оно здесь делает:
[].hasOwnProperty("length")
//==> true
Как мы знаем, свойство length
массива находится в Array.prototype
, поэтому к нему легко получить доступ из любого экземпляра массива, просто пройдя вверх по цепочке прототипов, зачем копировать его вниз? Это как-то связано с конкретной реализацией в браузере? (пример кода выше, выполненный в консоли Chrome). Даже MDN ясно говорит, что: ...методы и свойства не копируются из одного объекта в другой в цепочке прототипов. Доступ к ним можно получить, поднявшись по цепочке...
Array.prototype
- эээ, не совсем, это не так. - person Bergi   schedule 06.08.2021this
? Но это не похоже на то, что это было бы так же эффективно, как если бы каждый массив хранил свою собственную длину, и, возможно, не работал в ранних версиях ES. - person Robin Zigmond   schedule 06.08.2021.length
намного предшествует средству получения;.length
существует с 90-х. Это свойство экземпляра. - person Pointy   schedule 06.08.2021