Mille poolest erinevad "__proto__" ja "prototüüp"?


Vastus 1:

mitte

  • __proto__ on tegelik prototüüp, kuid ärge seda kasutage. konstruktor.prototüüp pidi tegema samamoodi nagu __proto__, kuid enamasti katki. Funktsiooni. prototüüp on tegelikult selle tehtud asjade prototüüp, mitte selle prototüüp.

prototüüp

.__ proto__

__proto__

__proto__

on tegelikult

uus

.prototüüp

Funktsioon.prototüüp

__proto__

.konstruktor.prototüüp

.konstruktor

Object.isPrototypeOf

Object.getPrototypeOf


Vastus 2:

Objektide programmeerimist JavaScriptis peetakse prototüüpipõhiseks

Päritud API määratlemiseks loote prototüüpobjekti koos meetodite ja potentsiaalselt mõne atribuudi vaikeväärtustega.

Kõigil "Funktsiooni" eksemplaridel (funktsioonid on JavaScripti objektid) on vaikimisi tühi "prototüübi" omadus, mida saab laiendada või asendada. Kui seda funktsiooni kutsutakse konstruktoriks koos uue operaatoriga, saab see "prototüübi" omadus eksemplaride sisemiseks "[prototüübiks]" omaduseks, kust otsitakse nende päritud API-sid

Seda prototüüpi saab määratleda ka täiesti uue objektina ja käsitsi süstida:

  • olemasoleval objektil objekti Object.setPrototypeOf () kaudu, mida kasutatakse ilma objekti funktsioonita Object.create () kaudu ilma konstruktorifunktsioonita, alistada funktsiooni vaikimisi prototüübi atribuudid sõna otseses mõttes, Object.assign () või Object.defineProperty ()

Pikka aega ei olnud objekti sisemine [prototüüp] ametlikult juurdepääsetav inspekteerimiseks ega muutmiseks. Üks võimalus selleks oli kontrollida objekti päritud "ehitaja" vara, kuid selle oleks võinud ise kergelt üle vaadata.

Seejärel tutvustas Mozilla mitteametlikku __proto__ abistajat.

Seejärel määras TC39 (ECMAScripti töörühm) ametliku API-le setPrototypeOf () / getPrototypeOf ().

Seejärel vallandas TC39 uuesti __proto__ API