prototipi ed ereditarietà javascript [duplicato]

Sep 09 2020

La mia domanda è che l'oggetto è l'ultimo sulla catena di prototipi tutti gli oggetti ereditano proprietà e metodi da esso come ereditano i metodi da Function.prototype, perché Object.__proto__ === Function.prototype// vero, perché Object.__proto__non è nullo.

Risposte

ScottMarcus Sep 09 2020 at 20:27

Il fondamentale Objectin JavaScript deve avere un modo per essere istanziato, quindi richiede un prototypeoggetto per aiutare in righe come questa:

let myObj = new Object();

Ed è per questo che Object.__proto__non lo è null.

L' Functionoggetto è un tipo speciale di oggetto che facilita la creazione di istanze dell'oggetto tramite un costruttore e quando utilizzato in questo modo è noto come "funzione del costruttore". Quindi, ha senso Objectereditare da un Functionoggetto in modo che le istanze dell'oggetto possano essere create.

Geuis Sep 09 2020 at 20:28

La funzione è anche un oggetto. Quindi eredita anche da Object.

Ma non lasciarti confondere da Object.__proto__. Questo è qualcosa che il browser aggiunge e non fa effettivamente parte della lingua. Quindi non fare affidamento su di esso o usarlo.

In sostanza, lo Function.prototypeè Object.__proto__.