Пример 1: Тип объекта и экземпляр объекта. Предположим, вы хотите создать тип объекта для автомобилей/cars. Вы хотите, чтобы этот тип назывался 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 в качестве параметров для свойства owner. Чтобы найти имя owner/владельца машины car2, Вы можете получить доступ к следующему свойству:
car2.owner.name