Maison > interface Web > js tutoriel > Explication détaillée des littéraux d'objet et des constructeurs créant des objets

Explication détaillée des littéraux d'objet et des constructeurs créant des objets

小云云
Libérer: 2018-02-10 14:06:42
original
2425 Les gens l'ont consulté

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);
Copier après la connexion

Extrait de code 2 :

var a=function(name){
    this.name=name;
};
var b= new a("nihao");
console.log(b);
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

Comme ci-dessus, vous pouvez facilement obtenir les résultats en exécutant le code ci-dessus :

{name: "nihao"} nihao nan {} undefined nan
Copier après la connexion

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.

Explication détaillée des littéraux d'objet et des constructeurs créant des objets

Recommandations associées :

Une brève discussion sur les littéraux js, l'accès aux littéraux d'objet et les clés Utilisation du mot dans

Quelles sont les différences dans les méthodes de fonctionnement de ces deux types de littéraux d'objet (json) en JavaScript ?

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!

É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