L'héritage en JavaScript se fait via une chaîne prototype: chaque objet a un autre objet comme prototype, et l'objet hérite des propriétés de ce prototype. Pour chaque objet, il existe trois façons d'accéder à son objet prototype:
1 .__ Proto__. L'objet prototype de l'objet est accessible via son attribut __proto__. Cette propriété n'est prise en charge que dans Firefox, Safari et Chrome, et non dans IE et Opera.
2.Object.getPrototypeOf (). Vous pouvez transmettre l'objet en tant que paramètre dans la méthode objet.getPrototypeOf (), et après exécution, il renvoie l'objet prototype de l'objet. Cette méthode n'est prise en charge que dans la norme ECMAScript 5.
3.O.Constructor.prototype. Obtenez d'abord la fonction du constructeur de l'objet, puis accédez à l'objet Prototype en accédant à la propriété Prototype de la fonction du constructeur. La condition préalable à l'utilisation de cette méthode est qu'il existe un attribut de constructeur pointant vers le constructeur de l'objet.
Pour déterminer s'il existe une relation de chaîne prototype entre deux objets, vous pouvez utiliser la méthode isprototype ():
La copie de code est la suivante:
var p = {x: 1};
var o = object.create (p);
console.log (p.isprototypeof (o)); // true
Pour tous les objets créés avec des littéraux, leur objet prototype est objet.prototype (en tant qu'objet spécial, object.prototype n'a pas d'objet prototype):
La copie de code est la suivante:
var x = {a: 18, b: 28};
console.log (x .__ proto __); // objet {}
Pour tous les objets créés avec le nouvel opérateur, leurs objets prototypes sont les propriétés prototypes de la fonction du constructeur:
La copie de code est la suivante:
var x = {a: 18, b: 28};
Test de fonction (c) {
this.c = c;
}
Test.prototype = x;
var t = nouveau test (38);
console.log (t); // objet {c = 38, a = 18, b = 28}
console.log (t .__ proto __); // objet {a = 18, b = 28}
console.log (t .__ proto __.__ proto __); // objet {}
Le processus d'utilisation du nouvel opérateur pour créer un objet dans JavaScript est le suivant:
1. Créez un nouvel objet vide.
2. Poignez l'attribut __proto__ de cet objet à l'attribut prototype de la fonction constructeur.
3. Utilisez cet objet comme ce paramètre et exécutez la fonction du constructeur.
D'après le processus de création ci-dessus, nous pouvons tirer une conclusion selon laquelle tous les objets construits à partir de la même fonction de constructeur ont l'attribut __proto__ (c'est-à-dire son objet prototype) égal, c'est-à-dire qu'il n'y a qu'un seul objet prototype:
La copie de code est la suivante:
var t = nouveau test (38);
var t2 = nouveau test (68);
console.log (t === t2); // false
console.log (t .__ proto__ === t2 .__ proto __); // true