Ядро JavaScript 1.5. Справочник

       

New


Операция new создаёт экземпляр определяемого пользователем типа объекта или встроенного типа объекта, имеющий конструктор функции.

Реализована вJavaScript 1.0

Версия ECMAECMA-262


Синтаксис

objectName = new objectType (param1 [,param2] ...[,paramN])


Параметры

objectName

Имя нового экземпляра объекта.

objectType

Тип объекта. обязан быть функцией, определяющей тип объекта.param1...paramN

Значения свойств объекта. эти свойства являются параметрами, определёнными для функции 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



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