Maison > interface Web > js tutoriel > Un malentendu sur la chaîne de prototypes Javascript et les compétences prototype_javascript

Un malentendu sur la chaîne de prototypes Javascript et les compétences prototype_javascript

WBOY
Libérer: 2016-05-16 16:33:04
original
1448 Les gens l'ont consulté

Avant, j'étais un peu confus au sujet de l'héritage prototypique et de la recherche d'identifiant dans la chaîne de prototypes Javascript,

Par exemple, le code suivant :

Copier le code Le code est le suivant :

fonction Foo() {};
var foo = nouveau Foo();
Foo.prototype.label = "laruence";
alert(foo.label); //sortie : laruence
alert(Foo.label);//sortie : non définie

J'ai vu la photo suivante aujourd'hui :

Mise en page des objets Javascript
Voir également dans la hiérarchie des objets Javascript :

Le prototype n'est utilisé que pour les propriétés héritées des objets/instances créés par cette fonction. La fonction elle-même n'utilise pas le prototype associé.

En d'autres termes, le prototype de l'objet fonction n'affecte pas le processus de recherche de chaîne de prototypes,

J'ai découvert aujourd'hui sous Firefox (car Firefox a exposé le [[prototype]] via __proto__), ce qui participe réellement à la recherche d'identifiant est le __proto__ de l'objet fonction,

Copier le code Le code est le suivant :

fonction Foo() {};
var foo = nouveau Foo();
Foo.__proto__.label = "laruence";
alert(Foo.label); //sortie : laruence
alert(foo.label);//sortie : non définie

Et, évidemment :

Copier le code Le code est le suivant :

fonction Foo() {};
alert(Foo.__proto__ === Foo.prototype); //sortie : false

De plus, il a également expliqué,

Copier le code Le code est le suivant :

alert(Object.forEach); // non défini

Function.prototype.forEach = function (objet, bloc, contexte) {
pour (clé var dans l'objet) {
Si (typeof this.prototype[key] == "undefined") {
               block.call(contexte, objet[clé], clé, objet);
>
>

};

alert(Object.forEach);
alert(Function.forEach);
alert(Object.forEach === Function.forEach); // true
Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal