Альтернативно можно создавать объект в два этапа:
Для того чтобы определить тип объекта, создайте функцию для типа объекта, которая специфицирует имя, свойства и методы. Например, Вы хотите создать тип объекта для автомобилей/cars. Вы называете тип объекта car и хотите, чтобы у него были свойства make, model, year и color. Для реализации этого Вы должны написать следующую функцию:
function car(make, model, year) {Обратите внимание на использование this для присвоения значений свойствам объекта на основе значений, передаваемых в функцию.
Теперь Вы можете создать объект mycar:
mycar = new car("Eagle", "Talon TSi", 1993)Этот оператор создаёт объект mycar и присваивает специфицированные значения его свойствам. Тогда значением mycar.make будет строка "Eagle", mycar.year это целое число 1993 и так далее.
Вы можете создать любое количество объектов car через вызов new. Например,
kenscar = new car("Nissan", "300ZX", 1992)Объект может иметь свойство, которое само является объектом. Например, Вы определяете объект person:
function person(name, age, sex) {и инстанциируете два новых person-объекта:
rand = new person("Rand McKinnon", 33, "M")Затем Вы можете переписать определение car и включить в него свойство owner, которое принимает person-объект:
function car(make, model, year, owner) {Теперь можно инстанциировать новые объекты:
car1 = new car("Eagle", "Talon TSi", 1993, rand)Обратите внимание, что вместо передачи литеральной строки или целочисленного значения при создании новых объектов, эти операторы передают объекты rand и ken как аргументы для owner. Затем, если Вы хотите вычислить имя владельца автомобиля car2, Вы можете получить доступ к следующему свойству:
Заметьте, что Вы всегда можете добавить свойство к ранее определённому объекту. Например, оператор
car1.color = "black"добавляет свойство color объекту car1 и присваивает ему значение "black." Однако это не влияет на все другие объекты. Для добавления свойства всем объектам данного типа Вы должны добавить свойство в определение типа объекта car.