JavaScript Eredità pseudo-classica


Esempio

È un'emulazione dell'ereditarietà classica che utilizza l' ereditarietà prototipica che mostra quanto siano potenti i prototipi. È stato creato per rendere la lingua più attraente per i programmatori provenienti da altre lingue.

6

NOTA IMPORTANTE : poiché ES6 non ha senso utilizzare l'ereditarietà pseudo-calssica poiché il linguaggio simula le classi convenzionali . Se non stai usando ES6, dovresti . Se si desidera ancora utilizzare il modello di ereditarietà classico e si è in un ambiente ECMAScript 5 o inferiore, la pseudo-classica è la soluzione migliore.

Una "classe" è solo una funzione che è stata creata per essere chiamata con il new operando ed è utilizzata come costruttore.

function Foo(id, name) {
    this.id = id;
    this.name = name;
}

var foo = new Foo(1, 'foo');
console.log(foo.id);

Uscita della console

1

foo è un'istanza di Foo. La convenzione di codifica JavaScript dice che se una funzione inizia con una maiuscola, può essere chiamata come costruttore (con il new operando).


Per aggiungere proprietà o metodi alla "classe" devi aggiungerli al suo prototipo, che può essere trovato nella proprietà prototype del costruttore.

Foo.prototype.bar = 'bar';
console.log(foo.bar);

Uscita della console

bar

In effetti ciò che Foo sta facendo come "costruttore" è solo la creazione di oggetti con Foo.prototype come prototipo.


Puoi trovare un riferimento al suo costruttore su ogni oggetto

console.log(foo.constructor);

funzione Foo (id, nome) {...

console.log({ }.constructor);

function Object () {[codice nativo]}

E controlla anche se un oggetto è un'istanza di una data classe con l'operatore instanceof

console.log(foo instanceof Foo);

vero

console.log(foo instaceof Object);

vero