Домашняя » кодирование » Объектно-ориентированный JavaScript (OOJS) 3 способа создания экземпляров объектов

    Объектно-ориентированный JavaScript (OOJS) 3 способа создания экземпляров объектов

    Когда язык программирования все об объектах, первое, что нам нужно выучить, это как создавать объекты. Создать объекты в JavaScript довольно просто: пара фигурных скобок будет делать работу, однако, это ни единственный путь создать объект ни единственный путь вам когда-нибудь нужно будет использовать.

    В JavaScript экземпляры объектов созданный из встроенных объектов и появиться, когда программа работает. Например, Дата это встроенный объект, который дает нам информацию о датах. Если мы хотим показать текущую дату на странице, мы нужен экземпляр времени выполнения Дата которая несет информацию о текущей дате.

    JavaScript также позволяет нам определить наши собственные объекты которые могут создавать свои собственные экземпляры объектов во время выполнения. В JavaScript, все является объектом и каждый объект имеет предок называется объект. Создание экземпляра объекта называется конкретизации.

    1. новый оператор

    Одним из наиболее распространенных и известных методов создания нового экземпляра объекта является с использованием новый оператор.

    Тебе необходимо конструктор сделать новый операторская работа. Конструктор - это метод объекта, который объединяет новый экземпляр этого объекта. Его основной синтаксис выглядит так:

     новый конструктор () 

    Конструктор может принимать аргументы которые могут быть использованы для изменения или добавления свойств к экземпляру объекта, который он создает. Конструктор имеет то же имя как объект, к которому он принадлежит.

    Вот пример того, как создать экземпляр Дата() объект с новый ключевое слово:

     dt = новая дата (2017, 0, 1) console.log (dt) // вс 01 янв. 2017 00:00:00 GMT + 0100 

    Дата() является конструктором для создания нового Дата объект. Различные конструкторы для объекта принимать разные аргументы создать тот же вид экземпляров объекта с разнообразные атрибуты.

    Не все встроенные объекты в JavaScript могут быть созданы как Дата. Есть объекты, которые не приходи с конструктором: математический, JSON а также отражать, но они все еще обычные объекты.

    Среди встроенных объектов, которые имеют конструктор (ы), Условное обозначение нельзя вызывать в стиле конструктора создать новый экземпляр Условное обозначение пример. Это может быть только вызывается как функция который возвращает новый Условное обозначение значение.

    Кроме того, среди встроенных объектов, которые имеют конструктор (ы), не все нуждаются в вызове своих конструкторов с помощью новый оператор для того, чтобы быть создан. функция, массив, ошибка, а также RegExp также можно вызывать как функции, без использования новый ключевое слово, и они будут создавать экземпляры и возвращать новый экземпляр объекта.

    2. The отражать объект

    Бэкэнд-программисты могут быть уже знакомы с API отражения. Отражение - это особенность языков программирования для проверять и обновлять некоторые основные объекты, такие как объекты и классы, во время выполнения.

    В JavaScript вы уже могли выполнять немного операции отражения с использованием объект. Но, правильный API Reflection в конце концов появился и в JavaScript.

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

    тем не мение, отражать имеет эквивалент новый оператор: Reflect.construct () метод.

     Reflect.construct (target, argumentsList [, newTarget]) 

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

     var dt = Reflect.construct (Дата, [2017, 0, 1]); console.log (дт); // Вс 01 января 2017 00:00:00 GMT + 0100 

    Код выше имеет тот же эффект как экземпляр Дата() с использованием новый оператор. Хотя вы все еще можете использовать новый, Отражение Стандарт ECMAScript 6. Это также позволяет вам использовать newTarget аргумент, что является еще одним преимуществом перед новый оператор.

    Значение newTargetпрототип (а точнее, это прототип newTargetконструктор) становится прототипом вновь созданного экземпляра.

    Прототип является свойство объекта, значение которого также объект, несущий свойства исходного объекта. Короче говоря, объект получает своих членов от своего прототипа.

    Вот, давайте посмотрим пример:

     класс A constructor () this.message = function () console.log ('message from A') класс B constructor ()  message () console.log ('message from B')  data () console.log ('data from B') obj = Reflect.construct (A, [], B) console.log (obj.message ()); // сообщение из A console.log (obj.data ()); // данные из B console.log (obj instanceof B) // true 

    Мимоходом В в качестве третьего аргумента Reflect.construct (), значение прототипа OBJ объект сделано, чтобы быть таким же как прототип Вконструктор (который имеет свойства сообщение а также данные).

    таким образом, OBJ может получить доступ к сообщение а также данные, доступно по прототипу. Но с тех пор OBJ сделано с использованием , у него также есть свой сообщение Это полученные от .

    Даже если OBJ построен как массив, это не пример массив, потому что его прототип установлен на объект.

     obj = Reflect.construct (Array, [1,2,3], Object) console.log (obj) // Array [1, 2, 3] console.log (obj instanceof Array) // false 

    Reflect.construct () может быть полезным, когда вы хотите создать объект используя более одного проекта.

    3. The Object.create () метод

    Вы также можете создать новый обычный объект с конкретным прототипом с помощью Object.create (). Это тоже может показаться очень похожим на использование новый оператор, но это не так.

     Object.create (O [, propertiesObject]) 

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

     class A constructor ()  message () console.log ('message from A') var obj = Object.create (new A (), data: writable: true, настраиваемый: true, значение: function () return 'data from obj') console.log (obj.message ()) // сообщение из A console.log (obj.data ()) // данные из obj obj1 = Object.create ( new A (), foo: writable: true, настраиваемый: true, value: function () return 'foo from obj1') console.log (obj1.message ()) // сообщение от консоли. log (obj1.foo ()) // foo из obj1 

    в OBJ объект, добавленное свойство данные, пока в obj1, его Foo. Итак, как вы видите, мы можем иметь свойства и методы, добавленные в новый объект.

    Это здорово, когда вы хотите создать несколько объектов одного вида но с различные дополнительные свойства или методы. Object.create () синтаксис избавляет от необходимости кодировать их все по отдельности.

    Следующая статья
    OCR что-нибудь с OneNote 2007 и 2010
    Предыдущая статья
    NVIDIA GeFORCE 8600 GTS