JavaScript Конструкторы объектов
Пример
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
Считается хорошей практикой называть функции конструктора с первой буквой верхнего регистра.
Типы объектов (чертежи) (классы)
Примеры из предыдущих глав ограничены. Они только создают одиночные объекты.
Иногда мы нуждаемся в "план" для создания многих объектов одного и того же "типа".
Способ создания "типа объекта", заключается в использовании функции конструктора объектов.
В приведенном выше примере функция Person () является функцией конструктора объектов.
Объекты одного типа создаются путем вызова функции конструктора с помощью ключевого слова New :
var myFather = new Person("John", "Doe", 50, "blue");
var myMother = new Person("Sally", "Rally", 48, "green");
Ключевое слово this
В JavaScript, вещь называется это объект, который "владеет" код.
Значение this, при использовании в объекте, является сам объект.
В функции конструктора это значение не имеет. Он заменяет новый объект. Значение этого параметра станет новым объектом при создании нового объекта.
Обратите внимание, что это не переменная. Это ключевое слово. Значение этогозначения изменить нельзя.
Добавление свойства к объекту
Добавить новое свойство к существующему объекту очень просто:
Пример
myFather.nationality = "English";
Свойство будет добавлено в моего отца. Не моя мать. (не для других объектов Person).
Добавление метода к объекту
Добавить новый метод к существующему объекту очень просто:
Пример
myFather.name = function () {
return this.firstName + " " + this.lastName;
};
Метод будет добавлен в моего отца. Не моя мать. (не для других объектов Person).
Добавление свойства в конструктор
Нельзя добавить новое свойство в конструктор объектов так же, как добавляется новое свойство к существующему объекту:
Пример
Person.nationality = "English";
Чтобы добавить новое свойство в конструктор, необходимо добавить его в функцию конструктора:
Пример
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = "English";
}
Таким образом, свойства объекта могут иметь значения по умолчанию.
Добавление метода в конструктор
Функция конструктора также может определять методы:
Пример
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.name = function() {return this.firstName + " " + this.lastName;};
}
Нельзя добавить новый метод в конструктор объектов так же, как добавить новый метод к существующему объекту.
Добавление методов к объекту должно выполняться внутри функции конструктора:
Пример
function Person(firstName, lastName, age, eyeColor) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.eyeColor = eyeColor;
this.changeName = function (name) {
this.lastName = name;
};
}
Функция чанженаме () присваивает значение Name свойству "Фамилия" пользователя.
Теперь вы можете попробовать:
myMother.changeName("Doe");