Конструкторы объектов JavaScript
- Предыдущая страница Доступ к объектам JS
- Следующая страница Прототипы объектов JS
пример
function Person(first, last, age, eye) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eye; }
Хорошая привычка — называть конструктор функции с заглавной буквы.
Тип объекта (蓝图) (класс)
Пример в предыдущей главе имеет ограничения. Они создают только один объект.
Иногда нам нужно создать множество объектов одного и того же «типа»:蓝图».
Метод создания «типа объекта» — это использованиеконструктор объекта.
В примере выше,функция Person() это сам конструктор объекта.
Через new ключевое слово вызова конструктора функции может создавать объекты одного и того же типа:
var myFather = new Person("Bill", "Gates", 62, "blue"); var myMother = new Person("Steve", "Jobs", 56, "green");
this ключевым словом
В JavaScript это называется this
Вещи, которые являются «владельцами» кода.
this
ее значение, когда она используется в объекте, это сам объект.
В конструкторе функцииthis
Это заменитель объекта без значений. Когда создается новый объект, значение this становится этим новым объектом.
Обратите внимание this
Это не переменная. Это ключевое слово. Вы не можете изменить значение this.
Добавление атрибутов к объекту
Добавление нового атрибута к уже существующему объекту очень просто:
пример
myFather.nationality = "English";
Новый атрибут добавлен к myFather. Не к myMother и не к любому другому объекту person.
Добавление методов к объекту
Добавление нового метода к уже существующему объекту очень просто:
пример
myFather.name = function () { return this.firstName + " " + this.lastName; };
Новый метод добавлен к myFather. Не к myMother и не к любому другому объекту person.
Добавление атрибутов к constructor
В отличие от добавления новых атрибутов к уже существующему объекту, вы не можете добавить новый атрибут к constructor объекта:
пример
Person.nationality = "English";
Чтобы добавить новый атрибут к constructor, вы должны добавить его в функцию constructor:
пример
function Person(first, last, age, eyecolor) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eyecolor; this.nationality = "English"; }
Таким образом, свойства объекта могут иметь значения по умолчанию.
Добавление методов к constructor
Ваш constructor может также определять методы:
пример
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; }; }
Функция changeName()assigns the value of name to the lastName property of person.
Теперь вы можете попробовать это:
myMother.changeName("Jobs");
через myMother
замена thisJavaScript может определить,哪个 person он обрабатывает в данный момент.
внутренние JavaScript-конструкторы
JavaScript предоставляет конструкторы для базовых объектов:
пример
var x1 = new Object(); // новый объект Object var x2 = new String(); // новый объект String var x3 = new Number(); // новый объект Number var x4 = new Boolean(); // новый объект Boolean var x5 = new Array(); // новый объект Array var x6 = new RegExp(); // новый объект RegExp var x7 = new Function(); // новый объект Function var x8 = new Date(); // новый объект Date
Math()
Объекты не включены в этот список. Math является глобальным объектом.new
Ключевые слова не могут быть использованы в Math.
Знаете ли вы?
Как видно из вышеизложенного, JavaScript предоставляет объектные версии базовых данных: строка, число и логическое значение. Но нет причин создавать сложные объекты. Исходные значения быстрее!
пожалуйста, используйте литерал объекта {}
вместо new Object()
.
пожалуйста, используйте литерал строки ""
вместо new String()
.
пожалуйста, используйте литерал числа Number()
.
пожалуйста, используйте литерал логического значения new Boolean()
.
пожалуйста, используйте литерал массива []
вместо new Array()
.
пожалуйста, используйте литерал шаблона new RexExp()
.
пожалуйста, используйте функциональное выражение () {}
вместо new Function()
.
пример
var x1 = {}; // новый объект var x2 = ""; // новый исходный строковый значений var x3 = 0; // новый исходный числовой значений var x4 = false; // новый исходный логический значений var x5 = []; // Новый объект массива var x6 = /()/ // Новый объект регулярного выражения var x7 = function(){}; // Новый объект функции
Строковые объекты
Обычно, строковые значения создаются в виде原始ных значений: var firstName = "Bill"
Но также можно использовать new
Ключевые слова для создания строковых объектов: var firstName = new String("Bill")
Пожалуйста, в Строки JSВ этой главе вы узнаете, почему не следует создавать строковые значения в виде объектов.
Числовые объекты
Обычно, числовые значения создаются в виде原始ных значений: var x = 456
Но также можно использовать new
Ключевые слова для создания числовых объектов: var x = new Number(456)
Пожалуйста, в Числа JSВ этой главе вы узнаете, почему не следует создавать числовые значения в виде объектов.
Булевые объекты
Обычно, логические значения создаются в виде原始ных значений: var x = false
Но также можно использовать new
Ключевые слова для создания логических объектов: var x = new Boolean(false)
Пожалуйста, в Логика JSВ этой главе вы узнаете, почему не следует создавать логические значения в виде объектов.
- Предыдущая страница Доступ к объектам JS
- Следующая страница Прототипы объектов JS