__proto__ является внутренним прототипом, а прототип является прототипом конструктора (конструктор на самом деле является функцией)
Прототип конструктора является объектом
Так что же такое конструктор?
Чтобы создать объект, вы должны сначала иметь конструктор объекта, как в PHP. Чтобы создать объект, вы должны сначала иметь класс
Суть конструктора является функцией. Следующий вопрос: как создать объект через этот конструктор?
Ответ: новый
Конструктор строит объект.
1. __proto__ всех конструкторов/функций указывает на функцию. Прототип, который является пустой функцией (пустая функция)
Кода -копия выглядит следующим образом:
Номер .__ Proto__ === function.prototype
// истинный
Boolean .__ Proto__ === function.prototype
// истинный
String .__ Proto__ === function.prototype
// истинный
Объект .__ Proto__ === function.prototype
// истинный
Функция .__ Proto__ === function.prototype
// истинный
Массив .__ Proto__ ===
Function.prototype
// истинный
Regexp .__ Proto__ === function.prototype
// истинный
Ошибка .__ Proto__ ===
Function.prototype
// истинный
Дата .__ Proto__ ===
Function.prototype
// истинный
Это показывает, что число и другие конструкторы на самом деле являются объектами функции. То есть он эквивалентен var number = new function ();
В JavaScript есть 12 встроенных конструкторов/объектов (JSON вновь добавлен в ES5), и вот 8 конструкторов, которые можно получить. Остальное заключается в том, что глобальный не может быть доступен напрямую, аргументы создаются двигателем JS только тогда, когда функциональные вызовы, математика и JSON существуют в форме объекта, без нового. Их __proto__ - это объект. Прототип. следующее
Кода -копия выглядит следующим образом:
Math .__ Proto__ === Object.prototype
// истинный
Json .__ Proto__ === Object.prototype
// истинный
«Все конструкторы/функции», упомянутые выше, безусловно, включают пользовательские. следующее
Кода -копия выглядит следующим образом:
// Объявление функции
Функциональный человек ()
{}
// Функция выражения
вар
=
function ()
{}
console.log (человек .__ Proto__ === function.prototype)
// истинный
Console.log (Man .__ Proto__ ===
Function.prototype)
// истинный
Что это значит?
Все конструкторы поступают из функции. Прототип и даже включает в себя объект корневого конструктора и саму функцию. Все конструкторы наследуют свойства и методы функции. Прототип. Такие как длина, вызов, применить, привязать (es5).
Function.Prototype также является единственным прототипом с типом xxx.prototype как «функция». Прототипы других конструкторов - все объекты. следующее
Кода -копия выглядит следующим образом:
console.log (typeof function.prototype)
// функция
console.log (typeof object.prototype)
// объект
console.log (typeof number.prototype)
// объект
console.log (typeof boolean.prototype)
// объект
console.log (typeof string.prototype)
// объект
console.log (typeof array.protototype)
// объект
console.log (typeof regexp.prototype)
// объект
console.log (typeof error.prototype)
// объект
console.log (typeof date.prototype)
// объект
console.log (typeof object.prototype)
// объект
О, и также упоминается выше, что это пустая функция, взгляните на нее под предупреждением (function.prototype).
Я знаю, что все конструкторы (включая встроенные и пользовательские) являются функциями.
Я полагаю, что все слышали, что функции в JavaScript также являются первоклассными гражданами, так где бы их можно было отразить? следующее
Кода -копия выглядит следующим образом:
console.log (function.prototype .__ Proto__ ===
Object.Prototype)
// истинный
Это показывает, что все конструкторы также являются обычными объектами JS, и они могут добавлять/удалять атрибуты и т. Д. В конструктор. В то же время он также наследует все методы на объекте.
Кто __proto__ Object.protototype?
Кода -копия выглядит следующим образом:
Object.prototype .__ Proto__ ===
нулевой //
истинный
Он уже достиг вершины, для NULL.
Есть ли у вас какие -либо понимания разницы между __proto__ и прототипом в JavaScript? Если у вас есть какие -либо вопросы, оставьте сообщение и позвольте нам обсудить это вместе