Схематическая цепочка прототипов JavaScript

JavaScript
Схематическая цепочка прототипов JavaScript

автор:HerryLo

Эта статья имеет постоянную действующую ссылку: https://github.com/AttemptWeb......

Цепочка прототипов и объект-прототип являются ядром js. В форме цепочки прототипов js гарантирует, что методы и свойства в функциях или объектах могут быть переданы вниз. Согласно объектно-ориентированному подходу, это наследование. А js может реализовать наследование функций или объектов через цепочку прототипов, поэтому поговорим о цепочке прототипов в js.Большинство фотографий ниже, пожалуйста, ешьте с уверенностью.

прототип и конструктор

прототип указывает на объект-прототип функции, который является явным свойством прототипа, которое есть только у функций..contructorУказатель на конструктор объекта-прототипа.

// 可以思考一下的打印结果,它们分别指向谁
function Foo() {}

console.log(Foo.prototype)
console.log(Foo.prototype.constructor)
console.log(Foo.__proto__)
console.log(Foo.prototype.__proto__)

Давайте посмотрим на отношения между каждым конструктором и его собственным объектом-прототипом:

proto

Каждый объект имеет_proto_, которое является неявным свойством прототипа, указывающим на прототип конструктора, который создал объект. Поскольку в js нет понятия класса, чтобы добиться наследования, передайте_proto_Связывая объекты и прототипы в цепочку прототипов, вы можете разрешить объектам доступ к свойствам, которые им не принадлежат.

Связь между функциями и объектами

Foo, Function и Object — все функции, их_proto_оба указывают наFunction.prototype.

Связь между объектами-прототипами

их_proto_все указывают наObject.prototype. Цепочка прототипов js в конечном итоге указывает на объект прототипа Object.

_proto_ схема цепочки прототипов

Я считаю, что если вы понимаете приведенную выше диаграмму, вы уже должны понимать цепочку прототипов js.

Суммировать

  • Функция и объект — это две функции.
  • protoСоединение объектов и прототипов образует цепочку прототипов.
  • всех функцийprotoОба указывают на объект-прототип Function.
  • Цепочка прототипов js, наконец, указывает на объект-прототип Object (Object.prototype)(здесь я не указал значение null).

Смотрите больше сообщений в блоге:

Персональные самородки Больше ссылок на статьи Перейти;

Публикация в блоге GitHub больше ссылок на статьи прыгает;