Есть много способов определить занятия в JS:
1. Заводской метод
Кода -копия выглядит следующим образом:
функциональный car () {
var Ocar = новый объект;
ocar.color = "Синий";
ocar.doors = 4;
ocar.showcolor = function () {
document.write (this.color)
};
вернуть Окар;
}
var car1 = car ();
var car2 = car ();
Когда эта функция вызвана, создается новый объект, и все свойства и методы назначаются. Используйте эту функцию, чтобы создать 2 объекта с точно такими же свойствами. Конечно, моя сестра может изменить этот метод, передавая ему параметры.
Кода -копия выглядит следующим образом:
Функциональный автомобиль (цвет, дверь) {
var Ocar = новый объект;
ocar.color = color;
ocar.doors = дверь;
ocar.showcolor = function () {
document.write (this.color)
};
вернуть Окар;
}
var car1 = car ("red", 4);
var car2 = car ("blue", 4);
car1.showcolor () // output: "красный"
car2.showcolor () // Выход: "синий"
Теперь вы можете получить объекты с разными значениями, передавая различные параметры в функцию.
В предыдущем примере каждый раз, когда вызывается функциональный CAR (), создается showColor (), что означает, что каждый объект имеет свой собственный метод ShowColor ().
Но на самом деле каждый объект имеет одну и ту же функцию.
Хотя метод может быть определен вне функции, затем указав свойства функции на метод.
Кода -копия выглядит следующим образом:
функция showcolor () {
предупреждение (this.color);
}
функциональный car () {
var ocar = new Object ();
ocar.color = color;
ocar.doors = дверь;
ocar.showcolor = showcolor;
вернуть Окар;
}
Но это не похоже на метод функции.
2. Метод конструктора
Метод конструктора так же прост, как и метод завода, как показано ниже:
Кода -копия выглядит следующим образом:
Функциональный автомобиль (цвет, дверь) {
this.color = color;
this.doors = дверь;
this.showcolor = function () {
предупреждение (this.color)
};
}
var car1 = новый автомобиль ("красный", 4);
var Car2 = новый автомобиль ("синий", 4);
Вы можете видеть, что метод конструктора не создает объекты внутри функции, и ключевое слово, которое используется. Поскольку объект был создан при вызове конструктора, и его можно использовать только для доступа к свойствам объекта в функции.
Теперь, используя новые для создания объектов, это выглядит так! Но это то же самое, что и на заводе. Каждый вызов создает свой собственный метод для объекта.
3. Прототип метод
Этот метод использует преимущества атрибута прототипа объекта. Сначала создайте имя класса с пустой функцией, а затем все атрибуты и методы присваиваются атрибуту прототипа.
Кода -копия выглядит следующим образом:
функциональный car () {
}
Car.prototype.color = "red";
Car.prototype.doors = 4;
Car.prototype.showcolor = function () {
предупреждение (this.color);
}
var car1 = new Car ();
var car2 = new Car ();
В этом коде сначала определяется пустая функция, а затем свойства объекта определяются через атрибут прототипа. Когда эта функция будет вызвана, все свойства прототипа будут назначены объекту, который будет создан немедленно. Все объекты в этой функции хранят указатели на ShowColor (), который, по -видимому, принадлежит одному и тому же объекту.
Тем не менее, эта функция не имеет параметров, и атрибут не может быть инициализирован путем передачи параметров. Значение по умолчанию атрибута должно быть изменено после создания объекта.
Очень серьезная проблема с методом прототипа заключается в том, что когда атрибут указывает на объект, такой как массив.
Кода -копия выглядит следующим образом:
функциональный car () {
}
Car.prototype.color = "red";
Car.prototype.doors = 4;
Car.prototype.arr = new Array ("a", "b");
Car.prototype.showcolor = function () {
предупреждение (this.color);
}
var car1 = new Car ();
var car2 = new Car ();
CAR1.Arr.push ("cc");
оповещение (CAR1.ARR); // Вывод: AA, BB, CC
Блюдо (CAR2.ARR); // Вывод: AA, BB, CC
Здесь, из -за эталонного значения массива, оба автомобильных объекта указывают на один и тот же массив, поэтому, когда значение добавлено в CAR1, вы также можете увидеть его в CAR2.
Союз - это метод, который может создавать объекты, такие как другие языки программирования, используя конструктор/прототип. Это метод, который использует конструкторы для определения нефункциональных свойств объектов и использует прототипы для определения объектов.
Кода -копия выглядит следующим образом:
Функциональный автомобиль (цвет, дверь) {
this.color = color;
this.doors = дверь;
this.arr = new Array ("aa", "bb");
}
Car.prototype.showcolor () {
предупреждение (this.color);
}
var car1 = новый автомобиль ("красный", 4);
var Car2 = новый автомобиль ("синий", 4);
CAR1.Arr.push ("cc");
оповещение (CAR1.ARR); // Вывод: AA, BB, CC
Блюдо (CAR2.ARR); // Вывод: AA, BB
5. Динамический метод прототипа
Динамический метод прототипа аналогичен методу смешанного конструктора/прототипа. Единственная разница - это положение, приведенное методу объекта.
Кода -копия выглядит следующим образом:
Функциональный автомобиль (цвет, дверь) {
this.color = color;
this.doors = дверь;
this.arr = new Array ("aa", "bb");
if (typeof car._initialize == "не определен") {
Car.prototype.showcolor = function () {
предупреждение (this.color);
};
Car._initialize = true;
}
}
Динамический метод прототипа состоит в том, чтобы использовать флаг, чтобы определить, был ли прототип назначен метод. Это гарантирует, что метод создается только один раз
6. Смешанный фабричный метод
Его цель учителя создает фальшивый конструктор, который возвращает только новые экземпляры другого объекта.
Кода -копия выглядит следующим образом:
функциональный car () {
var ocar = new Object ();
ocar.color = "red";
ocar.doors = 4;
ocar.showcolor = function () {
предупреждение (this.color)
};
вернуть Окар;
}
В отличие от заводского метода, этот метод использует новый оператор.
Вышеуказанное - все методы создания объектов. Наиболее широко используемым методом является метод гибридного конструктора/прототипа, а метод динамического прототипа также очень популярен. Функционально эквивалентный методу конструктора/прототипа.
Выше приведено в этой статье, надеюсь, вам понравится.