prototipi ed ereditarietà javascript [duplicato]
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
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.
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__.