JavaScript-это объектно-ориентированный голос, то есть все является объектом.
Так как же генерировать объект? В мире Java объекты создаются классовыми экземплярами. С точки зрения непрофессионала, они абстрагируют вещи в форму и используют эту плесень (класс) для производства конкретных реальных объектов (объектов).
Тем не менее, нет концепции класса в JS. Некоторые из них являются «прототипами», а объекты получены из прототипов. С точки зрения непрофессионала, в мире JS «прототип» - это не плесень, а конкретный объект (объект). Все объекты получены из другого объекта, и этот производный объект является так называемым «прототипом объектом».
В JavaScript есть три типа объектов, 1, созданный пользователем объект, 2 объекта конструктора, 3 объекта прототипа
Каждый из этих трех объектов имеет атрибут «свойства -_proto__», который указывает на прототип объекта и может быть отслежен до объекта.
Конструктор имеет объект прототипа, который указывает на объект прототипа. Когда объект создается через этот конструктор, атрибут __proto__ созданного объекта будет указывать на атрибут прототипа конструктора.
Объект прототипа имеет свойство конструктора, которое указывает на соответствующий конструктор.
Разговор дешево, покажи мне код! Давайте посмотрим на код:
var obj = {}; console.log (obj);Давайте разместим __proto__, чтобы увидеть: некоторые методы по умолчанию.
Вы определенно произойдете, что в этом объекте __proto__ также есть объект __proto__. Как мы только что сказали, у каждого объекта есть атрибут __proto__, указывающий на свой объект прототипа. Давайте распечатаем __proto__ в этом __proto__:
console.log (obj .__ Proto __.__ Proto__); //-> null
Результат является нулевым, что указывает на то, что поступил объект прототипа верхнего уровня. OBJ определяется в скобках {}, а объект прототипа OBJ, естественно, является объектом JS верхнего уровня.
Давайте посмотрим на код с одной стороны, чтобы укрепить наше понимание:
var parent = {name: "parent"}; var child = {name: "child", __proto__: parent}; var subchild = {name: "subchild", __proto__: kild} console.log (subchild);