Есть много способов создания объектов в JavaScript.
Конструктор объекта/объект буквальный :
Откладывая шаблон проектирования, самый базовый метод - сначала вызовать конструктор объекта, чтобы создать объект, а затем добавить атрибуты в объект.
Кода -копия выглядит следующим образом:
var Student = new Object ();
Student.name = "xiao ming";
Студент.age = 20;
Student.getName = function () {
оповещение (this.name);
}
Студенты, которые знакомы с буквальным объектом JavaScript, могут измениться до лучшего способа письма, по крайней мере, это выглядит более кратким.
Кода -копия выглядит следующим образом:
var Student = {
Имя: "Сяо Хонг",
Возраст: 18,
getName: function () {
оповещение (this.name);
}
};
Недостатки. Одним из недостатков приведенного выше метода является то, что при использовании одного и того же интерфейса для создания множества подобных объектов будет сгенерировано большое количество дублированного кода. Это должно быть легко понять. Функции (методы или классы) обычно используются для создания публичных методов. Приведенный выше процесс создания объекта вообще не имеет тени функций, поэтому повторного использования нет.
Фабричный режим :
Заводская шаблона абстрагирует процесс создания конкретного объекта. Точно так же, как черный ящик, вам просто нужно вызвать функцию (введите завод) и пройти в соответствующие параметры (различные сырья), и выйдет соответствующий объект (продукт, произведенный фабрикой). Заводская шаблон решает проблему создания нескольких похожих объектов.
Кода -копия выглядит следующим образом:
Функция StudentFactory (имя, возраст) {
var Student = new Object ();
Student.name = name;
Студент.age = возраст;
Student.sayname = function () {
оповещение (this.name);
}
возвращение студента;
}
var P1 = StudentFactory ("ming", 20);
var p2 = студентфактория ("hong", 18);
Недостатки: заводская модель также имеет свои недостатки, и самым большим недостатком является вопрос распознавания типа объекта. Можно только определить, что объект имеет тип объекта (экземпляры p1 объекта), но невозможно определить, какой он тип. Студенты, созданные с использованием заводского режима, на самом деле обладают сходными свойствами и методами, но значения разные. Лучшее решение в настоящее время состоит в том, чтобы создать студенческую функцию, чтобы все объекты принадлежали типу студента. Таким образом, заводский режим неплохой, но режим конструктора лучше.
Пользовательский конструктор типа:
Конструкторы могут использоваться для создания объектов определенного типа.
Кода -копия выглядит следующим образом:
Функция студента (имя, возраст) {
this.name = name;
this.age = возраст;
this.sayname = function () {
оповещение (this.name);
}
}
var p3 = новый студент ("ming", 20);
var P4 = новый студент ("Hong", 18);
предупреждение (P3 экземпляр студента);
оповещение (p3.sayName == p4.sayName); //ЛОЖЬ
Недостатки: недостаток пользовательских конструкторов заключается в том, что каждый объект будет воссоздать свой собственный метод. На самом деле, эти методы имеют одинаковую функцию (например, SayName), но они не одинаковы (p3.mayname и p4.mename не равны).
Режим прототипа:
Определите пустую функцию и добавьте все свойства и методы в прототип, чтобы все объекты имели эти свойства и методы.
Кода -копия выглядит следующим образом:
function Student () {};
Student.prototype.name = "ming";
Student.prototype.age = 20;
Student.prototype.friends = ['Qi'];
Student.prototype.sayname = function () {
оповещение (this.name);
};
Недостатки: некоторые атрибуты не могут быть разделены, и обмен их вызывает проблемы, такие как: друзья. Большинство друзей каждого студента не будут прежними.
Комбинация конструктора и прототипа:
Кода -копия выглядит следующим образом:
Функция студента (имя, возраст, друзья) {
this.name = name;
this.age = возраст;
это. Друзья = друзья;
}
Студент.prototype = {
Конструктор: студент,
sayName: function () {
оповещение (this.name);
}
};
Резюме: комбинация конструкторов и прототипов является широко признанным методом создания пользовательских типов. Это также лучший метод среди вышеуказанных методов.
/***************************************************
На самом деле, уже есть много методов для создания объектов выше, но все еще есть некоторые специальные сценарии, которые требуют постоянной оптимизации.
Динамический режим прототипа:
Это оптимизация комбинации конструкторов и прототипов. Для тех общих атрибутов и методов, если они инициализированы, нет необходимости повторять инициализацию для повышения эффективности.
Кода -копия выглядит следующим образом:
Функция студента (имя, возраст) {
this.name = name;
this.age = возраст;
if ((typeof this.sayname)! = "function") {
Student.prototype.sayname = function () {
оповещение (this.name);
}
}
}
var stu = новый человек ("ming", 20);
// предупреждение (stu ancement для студента);
stu.sayname ();
var stunew = новый человек ("Hong", 18);
// warer (stunew exance of Student);
stunew.sayname ();
Когда создаются несколько объектов студентов, метод SAYNAME инициализируется только один раз.
Наконец, есть еще один очень полезный способ создания объектов, который состоит в том, чтобы безопасно построить функции.
Стабильный конструктор -шаблон:
Это и новое запрещено в этом режиме, и все объекты не имеют публичных атрибутов. Только значение переменной считывается, но не изменяется.
Кода -копия выглядит следующим образом:
//// Стаф -режим конструктора
Функция студента (имя, возраст) {
var o = new Object ();
o.sayname = function () {
оповещение (имя);
}
вернуть O;
}
var stu = студент ("ming", 21);
stu.sayname ();
Вышеупомянутые суммируют несколько общих методов JavaScript для создания пользовательских объектов, которые являются очень полными. Если у вас есть лучшие, пожалуйста, свяжитесь со мной. Эта статья продолжает обновляться.