Javascript prototípusok, tervezők

Közvetlenül azután, létrehoztunk egy függvény, hanem egy tulajdonsága a prototípus. amely rögzített egy tárgy:

Azonban ez a tulajdonság, mint az ürge, amely annak ellenére, hogy nem lehet látni:

Ha megpróbálja megtanulni a tárgyat, hogy ül az ingatlan, úgy tűnhet, hogy ez - üres:

Bármilyen pyhar mondják bizalommal, „Létrehoztunk egy objektumot, és egy osztály példánya Foo”. Valójában a 7 szimbólumok „új Foo” megkötik a következő mágikus:

  • Készítünk egy üres objektumot (például, ha írna egy = <> )
  • A prototípus az objektum van rendelve, hogy ül Foo.prototype
  • Ez az objektum van kötve a szervezetben ennek Foo
  • Végzett funkció Foo
  • Az új üzemeltető visszaadja a létrehozott objektum esetén Foo nem tér vissza semmi mást.
  • „Prototípus” a 2. bekezdés szerinti - olyan objektum, amely megkeresi a objektum tulajdonságait a. hogy nem kifejezetten tartalmazza. Az alábbi kód szemlélteti mindezt részletesebben:

    OK, milyen rájött, hogy mi az a „prototípus objektum”, honnan származik, és miért van szükség. Hogyan látni? Egy tökéletes világban utalhat obj.prototype és kap egy objektum prototípusát. De sajnos, mint fentebb láttuk, az azonos nevű tulajdonság egyébként - úgy tartja, hogy a kivitelező funkció teszi a prototípus objektumot. Ez arra utal, hogy akkor kap egy prototípus keresztül .prototype tervezők. próbálja ki:

    Úgy tűnik, hogy működik. De mi lenne, ha megpróbálta ábrázolni öröklés húzódó Foo másik „osztály”?

    Itt az ideje, hogy belegondolok, ahol valójában azt jelzi a.constructor. És valóban, nem jelzi ki, mert nincs olyan tulajdonság, úgy ez a prototípus láncban. A fenti példában a „prototípus a” - ebben az esetben Bar (mert Foo.prototype eredményeként az új Bar). Mi is nem egy példánya Bar ingatlan kivitelező. De ez a példány a prototípus Bar - mert Bar.prototype (prototípus például Bar) van .constructor ingatlan rámutatva, hogy a Bar ( „-gopher vagyon”, írtam az elején).

    Ha úgy gondolja, fakap ebben a példában ez történt annak a ténynek köszönhető, hogy a mi „kiterjesztett”, „osztály”, a „példány” (igen, minden - az idézetek!). Logikus, hogy „bontsa ki”, „osztály”, „osztály”, de valójában nem változik - a obj.constructor.prototype keresve a prototípus nem tudunk támaszkodni. Mivel obj.constructor - nem egy „függvényt, amely létrehozza obj”, és a legjobb esetben - „funkciót, hogy hozzon létre egy prototípus obj” (amint azt a dokkok MDN). A legjobb esetben -, mert valójában ott bármi lehet:

    Megjelenése előtt ez a dolog a fejlesztők már csak a tulajdon .__ proto__, amely csak akkor működik a böngésző Mozilla alakú.

    Itt az ideje a típus-sammari.

    Mi az a „prototípusa obj”?
    Ez egy objektumot, amely JS vonatkozik tulajdonságok, amelyek nem rendelkeznek a következő obj.

    Mi obj.prototype?
    Ha obj - jellemző, hogy obj.prototype - mi lesz a prototípus egy objektum, ha hívja az új obj ().

    Mivel a határon böngésző, hogy egy hivatkozás a prototípus tárgyat?
    :) nem gyakran kell az előny.

    Mi az obj .__ proto__?
    Ez a prototípus a tárgy obj, ha a Mozilla

    Mi Object.getPrototypeOf (obj)
    Ez egy módja annak, hogy egy hivatkozás a prototípus objektum obj, ami lesz cross-browser halála után IE8 (jó, akár FF 3.5)

    Miért tudja mindezt? o_0
    Ha a honlapok létrehozásával - a feladat. tudod, hogy minden nafig nem kell :) Ha csak az általános oktatás és a fej, hogy megtörje a szabadidő.

    Azt mondják, a helyes utat - a titokzatos leírás leírások JS. És persze itt hozzáadni az alacsony minőségű fordítás (melyek csak a fordítók nem okolható az úton).

    Az egyik az a benyomása támad. hogy a nyelv alkotók mindent megtesznek, hogy ez a felhasználók már nehéz megérteni.

    Között az új és szokatlan. de logikus OOP környezetben fogalmak. Meg kell véleményem tulajdonítható - polimorfizmus.

    „Amint hoztunk létre a funkció, hogy van egy prototípus tulajdonság, amely rögzített tárgy”

    A prototípus tulajdonsága funkció mindig. Ne felejtsük el. függvény maga egy objektum.

    „OK, milyen rájött, hogy mi az a” prototípus objektum”, honnan származik, és miért van szükségünk. És az órájára? Egy tökéletes világban utalhat obj.prototype és kap egy objektum prototípusát. De, sajnos, mint láttuk, az ingatlan az azonos nevet használják egyébként - úgy tartja, hogy a kivitelező funkció teszi a prototípust a tárgy. "

    Nem tudom, hogy elírás, vagy hiba van. De biztos, hogy vegye figyelembe - létrehoztuk a funkciója az objektum tulajdonság nevű prototípus is. Azonban ez a tulajdonság jelzi a következő, magasabb szintű objektum a prototípus lánc (általában Object).

    Nem tudom, hogy elírás, vagy hiba van. De biztos, hogy vegye figyelembe - létrehoztuk a funkciója az objektum tulajdonság nevű prototípus is. Azonban ez a tulajdonság jelzi a következő, magasabb szintű objektum a prototípus lánc (általában Object).

    Kérjük, törölje ezt a bekezdést az előzőt. ő minden bizonnyal téves, és utal a prototípus objektum

    Kapcsolódó cikkek