@AlexNew22

Почему метод keys в объекте есть только через Object?

Почему метод keys не добавили в прототип объекта и нужно обязательно вызывать это
obj = {}
Object.keys(object), а не obj.keys()?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 2
Alexandroppolus
@Alexandroppolus
кодир
В качестве гипотезы: поскольку Object традиционно является базовым классом для всяких других классов (иными словами, цепочки прототипов заканчиваются на Object.prototype), то весьма желательно ничего туда (в Object.prototype) не добавлять, чтобы не было пересечения с полями классов-наследников. Например, в твоём классе будет свой метод keys, и не получится воспользоваться стандартным. А так, натравливаешь Object.keys, и - нет проблем.
Ответ написан
Комментировать
Rst0
@Rst0
ну исправьте это досадное недоразумение один раз)
давайте лучше радоваться, что это не запрещено)
Object.prototype.keys = function(){
      return Object.keys(this);
}
Object.prototype.keysToString = function(){
      return Object.keys(this).join(' ');
}
 const obj = {
     one: true,
     two: true
  }
  console.log(obj.keys());
  console.log(obj.keysToString());

механизм, который штатно используется для перебора ключей не совсем таков, к мы читаем/используем(удобно) на экране - достаточно представить, что подразумевается под термином "живая коллекция".
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ev_g
@ev_g
Web dev.
Для экономии оперативки, чтобы не добавлять к каждому объявленному объекту набор методов.
Так исторически сложилось.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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