Возможно ли сделать Object.prototype пустым?

1

Я проверял некоторый код библиотеки JS и узнал, что использует функцию прототипа. Из основного объекта, такого как Object.prototype.toString.call(a, this) (здесь a - это объект). Так возможно ли присвоить значение null в основном прототипе объекта, например Object.prototype = null?

  • 0
    Вы можете создавать объекты с прототипом, назначенным для нуля. var obj = Object.create(null); , Это полезно при итерации этих объектов без .hasOwnProperty() .
Теги:

1 ответ

5
Лучший ответ

Object.prototype не доступен для записи. Так нет. На самом деле ни один из встроенных прототипов не доступен для записи.

Вы можете попробовать прямо здесь:

console.log(typeof Object.prototype.toString); //"function"
Object.prototype = null;
console.log(typeof Object.prototype.toString); //not nullified - still "function"

console.log(typeof String.prototype.substring); //"function"
String.prototype = null;
console.log(typeof String.prototype.substring); //same
  • 0
    @Vassan Спасибо за быстрый ответ. Но почему прототип равен нулю, когда мы создаем объект с помощью Object.create (Null)?
  • 1
    Это другой вариант использования. Вы явно создаете новый объект с нулевым прототипом (то, что вы передаете в качестве аргумента, устанавливается как __proto__ созданного экземпляра). Это отличается от создания поля прототипа самого встроенного типа Object как нулевого (что невозможно).
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню