New
Операция new создаёт экземпляр определяемого пользователем типа объекта или встроенного типа объекта, имеющий конструктор функции.
Реализована в
Синтаксис
objectName = new objectType (param1 [,param2] ...[,paramN])
Параметры
objectName |
Имя нового экземпляра объекта.
Тип объекта. обязан быть функцией, определяющей тип объекта.
Значения свойств объекта. эти свойства являются параметрами, определёнными для функции objectType.
Описание
Создание определяемого пользователем типа объектов проходит в два шага:
Создаётся экземпляр объекта с помощью оператора new.
Чтобы определить тип объекта, создайте функцию для этого типа объекта, которая специфицирует его имя, свойства и методы. Объект может иметь свойство, которое само является объектом. См. далее примеры.
Вы всегда можете добавить свойство к ранее определённому объекту. Например, оператор car1.color = "black" добавляет свойство color в car1
и присваивает ему значение "black". Однако это не влияет на другие объекты. Чтобы добавить свойство ко всем объектам того же типа, Вы обязаны добавить свойство в определение типа объекта car.
Вы можете добавить свойство к ранее определённому объекту
путём использования свойства . Оно определяет свойство, которое используется совместно всеми объектами, созданными данной функцией, а не только отдельным экземпляром этого типа объекта. Следующий код добавляет свойство color всем объектам типа car, а затем присваивает значение свойству color объекта car1.
Дополнительно см. .
Car.prototype.color=null
car1.color="black"
birthday.description="The day you were born"
Примеры
Пример 1:
Тип объекта и экземпляр объекта. Предположим, Вы хотите создать тип объекта для автомобилей. Вы хотите назвать это тип car
и Вы хотите, чтобы он имел свойства make, model и year. Для выполнения этого Вы можете написать следующую функцию:
function car(make, model, year) {
this.make = make
this.model = model
this.year = year
}
Теперь Вы можете создать объект под названием mycar
таким образом:
mycar = new car("Eagle", "Talon TSi", 1993)
Этот оператор создаёт mycar
и присваивает его свойствам специфицированные значения. Теперь значением mycar.make
является строка "Eagle", а mycar.year - это целое число 1993, и так далее.
Вы можете создать любое количество объектов типа car через вызов new. Например:
kenscar = new car("Nissan", "300ZX", 1992)
Пример 2:
Свойство объекта, которое само является объектом. Предположим, Вы определяете объект под названием person:
function person(name, age, sex) {
this.name = name
this.age = age
this.sex = sex
}
и создаёте два экземпляра person-объектов:
rand = new person("Rand McNally", 33, "M")
ken = new person("Ken Jones", 39, "M")
затем Вы можете переписать определение типа car
для включения в него свойства owner, которое принимает person-объект:
function car(make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
}
Чтобы создать новые экземпляры объекта, Вы пишете:
car1 = new car("Eagle", "Talon TSi", 1993, rand);
car2 = new car("Nissan", "300ZX", 1992, ken)
Вместо передачи строкового литерала или целочисленного значения при создании новых объектов, предыдущие операторы передают объекты rand
и ken в качестве параметров для owners. Чтобы найти имя владельца машины car2, Вы можете получить доступ к свойству:
car2.owner.name