1. Что такое конструктор
Конструкторы очень распространены на некоторых объектно-ориентированных языках, таких как Java, C ++ и PHP. В JavaScript конструктор является сначала нормальной функцией, которую можно назвать с помощью нового оператора и генерирует объект специального типа.
Кода -копия выглядит следующим образом:
// "Бенджамин" - конструктор
var benjamin = new Benjamin ("zuojj", "мужчина");
В приведенном выше примере Бенджамин - это бенджаминский объект, так как он экземпляр?
Кода -копия выглядит следующим образом:
Функция Benjamin (имя пользователя, секс) {
this.username = имя пользователя;
this.sex = sex;
}
var benjamin = new Benjamin ("zuojj", "мужчина");
// Выходы: Бенджамин {Sex: "Мужчина", имя пользователя: "Zuojj"}
Console.log (Benjamin);
Как мы видим, конструктор «Бенджамин» просто получает параметры передаваемых и назначает их этому объекту. Это связано с тем, что когда конструктор вызывается новым оператором, этот объект конструктора назначается объекту, возвращаемому новой операцией.
Это означает, что приведенный выше код эквивалентен:
Кода -копия выглядит следующим образом:
benjamin = {
"Имя пользователя": "Zuojj",
"Секс": "Мужчина"
}
2. Зачем использовать конструкторы
Есть несколько причин, по которым используются конструкторы:
1. Использование конструкторов означает, что все эти объекты могут быть созданы с использованием одной и той же основной структуры.
2. Использование конструктора означает, что объект «Бенджамин» явно обозначен как экземпляр функции «Бенджамин»
Кода -копия выглядит следующим образом:
Функция Benjamin (имя пользователя, секс) {
this.username = имя пользователя;
this.sex = sex;
}
var benjamin = new Benjamin ("zuojj", "мужчина");
var ben = {
"Имя пользователя": "Zuojj",
"Секс": "Мужчина"
}
// Выходы: true
Console.log (Бенджамин экземпляр Бенджамина);
// Выходы: ложь
console.log (экземпляр Бенджамина);
3. Использование конструкторов означает, что мы можем определить публичные методы на прототипе для обмена несколькими экземплярами
Кода -копия выглядит следующим образом:
Функция Benjamin (имя пользователя, секс) {
this.username = имя пользователя;
this.sex = sex;
}
Benjamin.prototype.getName = function () {
вернуть это.username;
}
var benjamin = new Benjamin ("zuojj", "мужчина");
var ben = new Benjamin ("лимон", "женский");
// Выходы: Zuojj
console.log (benjamin.getName ());
// Выходы: лимон
console.log (ben.getName ());
3. Что следует отметить
1. Новые ключевые слова
При создании конструктора вы не должны забывать использовать новое ключевое слово. Использовать ли новое ключевое слово окажет большое влияние на этот объект. Без нового ключевого слова этот объект будет указывать на глобальный объект (окно в браузере и Global в узле). Следовательно, при определении конструктора рекомендуется, чтобы первая буква имени функции была заглавной.
2. Если вызываемое функция не имеет явного возвращаемого выражения, этот объект будет неявно возвращать, что является недавно созданным объектом. В противном случае, результат будет затронут, но только в случае возвращенного объекта
Кода -копия выглядит следующим образом:
функция bar () {
возврат 2;
}
var bar = new Bar ();
// возвращать недавно созданный объект
// выходы: bar {}
console.log (bar);
функциональный тест () {
this.value = 2;
возвращаться {
Foo: 1
};
}
var test = new Test ();
// возвращаемый объект
// Выходы: Object {foo: 1}
console.log (тест);
На что нам нужно обратить внимание:
a) new Bar () возвращает недавно созданный объект, а не буквальное значение числа 2. Поэтому New Bar (). Constructor === Bar, но если возвращаемый объект номера, результат будет другим;
б) Новый тест (), полученный здесь, представляет собой объект, возвращаемый функцией, а не недавно созданный объект через новое ключевое слово, как показано ниже:
Кода -копия выглядит следующим образом:
функция bar () {
возврат 2;
}
var bar = new Bar ();
function barn () {
вернуть новый номер (2);
}
var barn = new Barn ();
// Выходы: true
console.log (bar.constructor === Bar);
// выходы: номер {}
console.log (сарай);
// Выпуск: ложь
console.log (barn.constructor === Barn);
// Выходы: true
console.log (barn.constructor === номер);
/ * -------------------------------------- *//
функциональный тест () {
this.value = 2;
возвращаться {
Foo: 1
};
}
var test = new Test ();
// Выходы: неопределенные
console.log (test.value);
// Выпуск: 1
console.log (test.foo);
Выше приведено краткое изложение конструктора. Я надеюсь, что для начинающих будет полезно. Если в статье есть какие -либо неподходящие моменты, я надеюсь критиковать и исправить их.