Homepage » Coding » Objektumorientált JavaScript (OOJS) 3 mód az objektum példányok létrehozására

    Objektumorientált JavaScript (OOJS) 3 mód az objektum példányok létrehozására

    Amikor egy programozási nyelv van minden tárgyról, az első dolog, amit meg kell tanulnunk hogyan hozhat létre objektumokat. Az objektumok létrehozása a JavaScript-ben meglehetősen egyszerű: egy pár göndör nadrágtartó ezt a feladatot azonban elvégzi sem az egyetlen út objektum létrehozásához sem az egyetlen módja soha nem kell használni.

    A JavaScript-ben az objektum példányok beépített objektumokból készült és a program futásakor jön létre. Például, Dátum egy beépített objektum, amely tájékoztatást nyújt a dátumokról. Ha szeretnénk megjeleníteni az aktuális dátumot egy oldalon, mi kell egy futásidejű példány Dátum amely az aktuális dátumra vonatkozó információkat tartalmazza.

    A JavaScript lehetővé teszi számunkra is definiálja saját objektumainkat amelyek saját objektumpéldányokat hozhatnak létre futás közben. A JavaScript, minden egy tárgy és minden objektumnak van egy végső őse hívott Tárgy. Az objektumpéldány létrehozását hívják példányosítás.

    1. A új operátor

    Az új objektumpéldány létrehozásának egyik leggyakoribb és legismertebb módja a használni a új operátor.

    Neked kell egy konstruktőr az új üzemeltető. A konstruktor egy olyan módszer, amely egy objektumot összeállít új objektuma. Alapvető szintaxisa így néz ki:

     új kivitelező () 

    Egy kivitelező tud fogadja el az érveket amelyek segítségével megváltoztathatja vagy hozzáadhatja a tulajdonságokat az általa konstruált objektumpéldányhoz. A kivitelező ugyanaz a neve mint az objektum, amelyhez tartozik.

    Íme egy példa arra, hogyan hozhat létre egy példája Dátum() tárgy a ... val új kulcsszó:

     dt = új dátum (2017, 0, 1) console.log (dt) // nap január 01 2017 00:00:00 GMT + 0100 

    Dátum() a konstruktor egy új létrehozása Dátum tárgy. Különböző konstrukciók egy tárgyhoz különböző érveket azonos objektum példányok létrehozásához változatos attribútumok.

    A JavaScript összes beépített objektumát nem lehet megjavítani Dátum. Vannak olyan tárgyak, amelyek ne jöjjön el egy kivitelezővel: Math, JSON és tükröznie, de még mindig rendes tárgyak.

    A beépített objektumok közül, amelyek konstruktorral rendelkeznek, Szimbólum nem lehet a konstruktor stílusában hívni újdonságot ad Szimbólum példa. Csak lehet függvénynek hívják amely új értéket ad vissza Szimbólum érték.

    Továbbá, a beépített objektumok között, amelyek konstruktorral rendelkeznek, nem mindenkinek kell a konstruktorukat hívni új operátor számára, hogy az azonnal elérhető legyen. Funkció, Sor, Hiba, és RegExp funkcióként is nevezhető, használata nélkül új kulcsszó, és új objektumpéldányt fognak megjeleníteni és visszaadni.

    2. A tükröznie tárgy

    Előfordulhat, hogy a háttérprogramozók már ismerik Reflection API-k. A reflexió a programozási nyelvek egyik jellemzője egyes alapelemek ellenőrzése és frissítése, például tárgyak és osztályok, futásidőben.

    A JavaScriptet már elvégezheti néhány reflexiós műveletek Tárgy. De, a megfelelő reflexiós API végül jött létre a JavaScript is.

    A tükröznie az objektumnak számos módja van objektumpéldányok létrehozása és frissítése. A tükröznie tárgy nincs építője, így nem lehet az új operátor, és, mint ahogy Math és JSON, azt nem lehet függvénynek nevezni bármelyik.

    azonban, tükröznie van egy egyenértékű új operátor: a Reflect.construct () eljárás.

     Reflect.construct (cél, argumentumokLista [, newTarget]) 

    Mind a cél és az opcionális NEWTARGET érvek saját konstruktorral rendelkező tárgyak, míg argumentsList egy érvek listája át kell adni a cél.

     var dt = Reflect.construct (dátum, [2017, 0, 1]); console.log (dt); // 2017. január 01. 00:00:00 GMT + 0100 

    A fenti kód ugyanaz a hatása mint azonnali Dátum() használni a új operátor. Bár továbbra is használhatja új, A reflexió egy ECMAScript 6 szabvány. Azt is lehetővé teszi, hogy használja a NEWTARGET érv, ami egy másik előny az új operátor.

    Az értéke NEWTARGETprototípusa (pontosan ez a prototípus. \ t NEWTARGETépítője) az újonnan létrehozott példány prototípusává válik.

    A prototípus a egy objektum tulajdonsága, amelynek értéke az egy tárgy is, az eredeti objektum tulajdonságait hordozza. Röviden, egy objektum a tagjait a prototípusától kapja.

    Itt lássunk egy példát:

     A osztály constructor () this.message = függvény () console.log ('üzenet A') B osztály konstruktor ()  üzenet () console.log ('üzenet a B-ből')  data () console.log ('adatok B') obj = Reflect.construct (A, [], B) console.log (objekt.message ()); // üzenet az A console.log (objekt.data ()); // adatok a B console.log-ból (objekt példány B) // true 

    Elhaladva B mint harmadik érv Reflect.construct (), a. \ t obj objektum ugyanaz mint a prototípus Bépítője (amely rendelkezik a tulajdonságokkal üzenet és adat).

    És így, obj hozzáférhet a üzenet és adat, prototípusában. De azóta obj készült A, ez is saját üzenet azt feladó A.

    Annak ellenére obj tömbként van felépítve, ez az nem egy példány Sor, mert a prototípusa be van állítva Tárgy.

     obj = Reflect.construct (Array, [1,2,3], Object) console.log (obj) // Array [1, 2, 3] console.log (objekt példány Array) // hamis 

    Reflect.construct () hasznos lehet, ha objektumot szeretne létrehozni több mint egy tervet használ.

    3. A Object.create () eljárás

    Létrehozhat a új szokásos objektum egy meghatározott prototípussal keresztül Object.create (). Ez is nagyon hasonlónak tűnhet a új operátor, de nem.

     Object.create (O [, tulajdonságokObjektum]) 

    A O az érv objektum a prototípust szolgálja az új létrehozandó objektumhoz. Az opcionális propertiesObject érv a tulajdonságok listája érdemes hozzáadni az új objektumhoz.

     A osztály konstruktor ()  üzenet () console.log („üzenet az A-tól”) var obj = Object.create (új A (), data: írható: igaz, konfigurálható: igaz, érték: function () return 'data from obj') console.log (objekt.message ()) // üzenet az A console.log (objekt.data ()) // adat obj objekt1 = Object.create ( új A (), foo: írható: igaz, konfigurálható: igaz, érték: függvény () return 'foo az obj1')) console.log (obj1.message ()) // üzenet az A konzolból. log (obj1.foo ()) // foo az obj1-ből 

    Ban,-ben obj objektum, a hozzáadott tulajdonság adat, közben obj1, ez ize. Tehát, ahogy látod, lehet új objektumhoz hozzáadott tulajdonságok és módszerek.

    Ez nagyszerű, ha létrehozni szeretne több azonos típusú objektum de különböző kiegészítő tulajdonságok vagy módszerek. A Object.create () a szintaxis megmenti a hibákat, hogy mindegyiket külön kódolja.