Начална » кодиране на стоките » Обектно-ориентиран JavaScript (OOJS) 3 начина за създаване на обекти

    Обектно-ориентиран JavaScript (OOJS) 3 начина за създаване на обекти

    Когато е език за програмиране всичко за обекти, първото нещо, което трябва да научим е как да създавате обекти. Създаването на обекти в JavaScript е доста лесно: чифт къдрави скоби ще свършат работата обаче нито единственият начин за да създадете обект нито единственият начин някога ще трябва да използвате.

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

    JavaScript също ни позволява дефинирайте нашите собствени обекти които могат да създадат свои собствени инстанции на обекти по време на изпълнение. В JavaScript, всичко е обект и всеки обект има краен прародител Наречен обект. Създаването на инстанция на обект се извиква инстанция.

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

    Един от най-често използваните и добре познати методи за създаване на нов обект е от използвайки нов оператор.

    Трябва ти конструктор да направим нов работа на оператора. Конструкторът е метод на обект, който събира a нов екземпляр на този обект. Основният му синтаксис изглежда така:

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

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

    Ето един пример как да създадете например Дата() обект с нов ключова дума:

     dt = new Дата (2017, 0, 1) console.log (dt) // Sun Jan 01 2017 00:00:00 GMT + 0100 

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

    Не всички вградени обекти в JavaScript могат да бъдат инстанцирани като Дата. Има обекти, които не идват с конструктор: Math, JSON и Отразява, но те все още са обикновени предмети.

    Сред вградените обекти, които имат конструктор (и), символ не може да бъде извикан в стила на конструктора да създадете нов пример символ инстанция. Тя може да бъде само извиква като функция което връща ново символ стойност.

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

    2. Отразява обект

    Задните програмисти може би вече са запознати API за отражение. Отражението е функция на езиците за програмиране инспектира и актуализира някои от основните субекти, като обекти и класове, по време на изпълнение.

    В JavaScript вече можете да изпълнявате някои операции по размисъл обект. Но, a подходящ API за отражение в крайна сметка се появи и в JavaScript.

    Най- Отразява обектът има набор от методи за създаване и актуализиране на потребителски екземпляри. Най- Отразява обект няма конструктор, така че не може да бъде инстанциран с нов оператор и, точно като Math и JSON, то не може да бъде извикан като функция един.

    въпреки това, Отразява има еквивалент на нов оператор: Reflect.construct () метод.

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

    И двете мишена и по избор NEWTARGET аргументи обекти със собствени конструктори, докато argumentsList е списък с аргументи да се предаде на конструктора на мишена.

     var dt = Reflect.construct (Дата, [2017, 0, 1]); console.log (DT); // Sun Jan 01 2017 00:00:00 GMT + 0100 

    Горният код има същия ефект като инстанцииране Дата() използвайки нов оператор. Въпреки че все още можете да използвате нов, Отражението е Стандарт ECMAScript 6. Той също така ви позволява използвайте NEWTARGET аргумент, което е друго предимство пред нов оператор.

    Стойността на NEWTARGETе прототип (за да бъдем точни, това е прототип на NEWTARGETКонструктор на става прототип на новосъздадената инстанция.

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

    Ето, да видим пример:

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

    Чрез преминаване B като трети аргумент за Reflect.construct (), прототипната стойност на. \ t OBJ обектът е направени да бъдат същите като прототип на BКонструктор (който има свойствата. \ t съобщение и данни).

    Поради това, OBJ достъп до съобщение и данни, в прототипа. Но оттогава OBJ се използва А, тя също има своя собствена съобщение то получено от А.

    Въпреки че OBJ е конструиран като масив не е случай на Array, защото прототипът му е настроен на обект.

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

    Reflect.construct () може да бъде полезно, когато искате да създадете обект използване на повече от един план.

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

    Можете също да създадете нов обикновен обект със специфичен прототип чрез Object.create (). Това също може да изглежда много подобно на използването на нов оператор, но това не е така.

     Object.create (O [, свойстваObject]) 

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

     class A конструктор ()  съобщение () console.log ('съобщение от A') var obj = Object.create (нов A (), data: writeable: true, configurable: true, value: 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 от obj1') console.log (obj1.message ()) // съобщение от конзолата A. log (obj1.foo ()) // foo от obj1 

    В OBJ обект, добавеното свойство е данни, докато в obj1, е Foo. Така че, както виждате, можем да имаме свойства и методи, добавени към нов обект.

    Това е чудесно, когато искате да създадете множество обекти от същия вид но със различни допълнителни свойства или методи. Най- Object.create () синтаксисът спестява неприятностите при кодирането им поотделно.

    Следваща статия
    OCR нещо с OneNote 2007 и 2010
    Предишна статия
    NVIDIA GeFORCE 8600 GTS