8c1dea14

Использование Конструктора Функции


Альтернативно Вы можете создать объект в два этапа:

Определить тип объекта, написав конструктор функции.

  • Создав экземпляр объекта с помощью оператора new.

  • Чтобы определить тип объекта, создайте функцию для типа объекта, которая специфицирует его имя , свойства и методы. Например, предположим, Вы хотите создать тип объекта для автомобилей и назвать его car, и чтобы он имел свойства make, model, year и color. Для этого нужно написать такую функцию:

    function car(make, model, year) {

       this.make = make;

       this.model = model;

       this.year = 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);

    vpgscar = new car("Mazda", "Miata", 1990);

    Объект может иметь свойство, которое само является объектом. Например, предположим, Вы определяете объект person:

    function person(name, age, sex) {

       this.name = name



       this.age = age

       this.sex = sex

    }

    и затем инстанциируете два новых объекта person:

    rand = new person("Rand McKinnon", 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. Теперь, чтобы определить имя владельца машины car2, Вы осуществляете доступ к свойству:

    car2.owner.name

    Заметьте, что таким образом Вы всегда добавляете свойство к ранее определённому объекту. Например, оператор

    car1.color = "black"

    добавляет свойство color объекту car1 и присваивает ему значение "black." Однако это не влияет на другие объекты. Чтобы добавить новое свойство ко всем объектам того же типа, Вы должны добавить свойство в определение типа объекта car.




    Содержание раздела