Конструктор, конструктор, мы все знакомы с этим именем. Конструктор всегда указывает на конструктор, который создает текущий объект.
Здесь следует отметить, что каждая функция имеет свойство прототипа, и конструктор этого прототипа указывает на эту функцию. В настоящее время, когда мы модифицируем прототип этой функции, произошла авария. нравиться
Функция человека (имя, возраст) {this.name = name; this.age = age;} person.prototype.getage = function () {return this.age;} person.prototype.getName = function () {return this.name;} var p = новое лицо ("nicholas", 18); console.log (p.constructor); // человек (имя, возраст) console.log (p.getage ()); //18console.log (p.getName ()); // НиколасНо если так:
Функция человека (имя, возраст) {this.name = name; this.age = age;} person.prototype = {getName: function () {return this.name; }, getage: function () {return this.age; }} var p = new Person ("nicholas", 18); console.log (p.constructor); // object () console.log (p.getage ()); //18console.log (p.getName ()); // НиколасВ результате конструктор изменился.
Причина в том, что сам прототип также является объектом, а приведенный выше код эквивалентен на
Person.prototype = new Object ({getName: function () {return this.name;}, getage: function () {return this.age;}});Поскольку конструктор всегда указывает на конструктор, который создает текущий объект, нетрудно понять, что приведенный выше код P.Constructor выводит объект.
Что мне делать, если конструктор после изменения прототипа и все еще хочет, чтобы он указывал на человека? Просто, просто присваивайте значение Person.prototype.constructor:
Person.prototype = {Constructor: Person, getName: function () {return this.name; }, getage: function () {return this.age; }}Приведенное выше краткое обсуждение конструктора в JavaScript - это весь контент, которым я делюсь с вами. Я надеюсь, что это может дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.