Для новичков прототип JavaScript - очень хлопотная вещь. Во -первых, прототип легко путать с __proto__, а во -вторых, различные направления между ними действительно сложны. На самом деле, на рынке уже есть много статей, пытающихся прояснить. На ней есть так называемая классическая картина с различными линиями, подключающимися к ней и этой. Честно говоря, я чувствую себя очень головокружение, не говоря уже о том, чтобы полностью понять это. Поэтому я также хочу попробовать сам, чтобы увидеть, смогу ли я разделить важные точки знаний в прототипе и четко объяснить в самой простой форме диаграммы.
Мы знаем, что прототип является объектом, с помощью которого другие объекты могут реализовать наследование атрибутов. Но в дополнение к прототипу, есть еще один __proto__, для которого используется? Как люди могут отличить его, если они выглядят такими похожими? На кого они указывают? Как вы можете вспомнить хаос? Что, черт возьми, является цепочкой прототипа? Я считаю, что многие новички, у которых даже есть какой -то опыт, могут не объяснить это полностью. Ниже приведены три простых картинка и некоторые примеры кодов для понимания.
1. Разница между прототипом и __proto__
var a = {}; console.log (a.prototype); //undefinedconsole.log(a.__proto__); // объект {} var b = function () {} console.log (b.prototype); // b {} console.log (b .__ Proto__); // function () {} /*1. Буквальный метод*/var a = {}; console.log (a .__ Proto__); // Object {} console.log (a .__ Proto__ === A.constructor.prototype); // true/*2. Метод конструктора*/var a = function () {}; var a = new a (); console.log (a .__ Proto__); // a {} console.log (a .__ Proto__ === A.constructor.prototype); // true/*3. Object.create () метод*/var a1 = {a: 1} var a2 = object.create (a1); console.log (a2 .__ Proto__); // Object {a: 1} console.log (a .__ Proto__ === A.constructor.prototype); // Неверно (это исключение на рисунке 1) var a = function () {}; var a = new a (); console.log (a .__ Proto__); // a {} (т.е. объект прототипа функции конструктора a) console.log (a .__ Proto __.__ Proto__); // Object {} (т.е. объект прототипа объекта функции конструктора) console.log (a .__ Proto __.__ Proto __.__ Proto__); //нулевойВыше всего об этой статье. В этой статье используются три картины, чтобы объяснить объекты прототипа и цепи прототипа JavaScript. Я надеюсь, что это будет полезно для всех при изучении JavaScript.