Les littéraux d'objet créent des objets, tandis que les constructeurs créent des objets de fonction. Afin de vous aider à comprendre, j’espère que cet article pourra aider tout le monde.
1. Pourquoi utiliser prototype lors de l'ajout d'attributs à la chaîne de prototypes, mais généralement pas __proto__
2 Pourquoi JavaScript doit-il être configuré. un objet fonction ? , quel est son rôle
3. Une compréhension plus approfondie de la chaîne de prototypes
Les deux morceaux de code suivants utilisent un objet les littéraux et les constructions respectivement. Les fonctions créent des objets.
Extrait de code 1 :
var a={"name":"nihao"}; console.log(a);
Extrait de code 2 :
var a=function(name){ this.name=name; }; var b= new a("nihao"); console.log(b);
Tout d'abord, nous devons savoir :
1. Le prototype de l'objet fonction est l'objet (la chaîne de prototypes est : instance, via le nouveau constructeur--> objet fonction--> objet-->null)
2. La fonction a des attributs prototypes et l'objet n'a pas
Ensuite, dans certains scénarios, nous avons un attribut public qui nécessite que plusieurs objets nouvellement créés héritent des caractéristiques de. les objets de fonction peuvent être reflétés. Jetons un coup d'œil au code :
1. En utilisant le constructeur
var a=function(name){ this.name=name; }; a.prototype.sex="nan"; var b= new a("nihao"); console.log(b); console.log(b.name); console.log(b.sex); var c=new a("test"); console.log(c); console.log(c.name); console.log(c.sex);
comme ci-dessus, vous pouvez facilement implémenter l'héritage d'attributs ou de méthodes. . Imprimez le code ci-dessus sur la console, et vous pourrez facilement voir que la chaîne de prototypes est comme ceci (en prenant l'objet b comme exemple) : Objet b-->Objet de fonction-->Objet-->. ;null
2. Utiliser des littéraux d'objet
L'objet créé à l'aide de littéraux d'objet n'a pas d'attribut de prototype, nous ne pouvons donc transmettre que __proto__, mais l'utilisation de __proto__ sur l'objet peut causer des problèmes. Le code est le suivant :
var a={"name":"nihao"}; a.__proto__.sex="nan"; console.log(a); console.log(a.name); console.log(a.sex); var b={}; console.log(b); console.log(b.name); console.log(b.sex);
Comme ci-dessus, vous pouvez facilement obtenir les résultats en exécutant le code ci-dessus :
{name: "nihao"} nihao nan {} undefined nan
Hé, c'est très étrange, l'objet b est évidemment réglé sur vide ? En effet, lors de l'exécution de a.__proto__.sex="nan";, le programme ajoute un attribut sex au prototype de l'objet, et b est le prototype de l'objet et l'objet hérité, ce qui conduit souvent à l'apparition de ce problème. problème.
Finalement, le résumé est :
L'objet fonction est hérité du prototype de l'objet. Avec l'objet fonction, on peut ajouter des attributs au prototype de l'objet. fonction, et ces attributs sont enregistrés dans l'objet fonction, mais n'affectent pas les autres objets.
Recommandations associées :
Explication détaillée des fonctions de classe, de constructeur et d'usine en Javascript
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!