Maison > interface Web > js tutoriel > Différences dans l'utilisation de for...in et Object.keys() pour énumérer les propriétés d'objet en JavaScript (code joint)

Différences dans l'utilisation de for...in et Object.keys() pour énumérer les propriétés d'objet en JavaScript (code joint)

不言
Libérer: 2019-03-18 11:34:16
avant
2821 Les gens l'ont consulté

Le contenu de cet article porte sur la différence entre l'utilisation de for...in et Object.keys() pour énumérer les propriétés d'un objet en JavaScript (avec du code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent le faire pour référence. j'espère que cela vous sera utile.

Vous pouvez obtenir les propriétés d'un objet en utilisant à la fois la boucle for...in et la méthode Object.keys, alors quelle est la différence entre elles ? Supposons qu'il existe un objet a :

var a = {x: 1, y: 2};
Object.defineProperty(a, 'z', {value: 3}); // 定义不可枚举属性z
var keys = [];
for (var key in a) {
    keys.push(key);
}
console.log(keys);
console.log(Object.keys(a));
Copier après la connexion

Le résultat de sortie du programme est :

Différences dans lutilisation de for...in et Object.keys() pour énumérer les propriétés dobjet en JavaScript (code joint)

Les deux méthodes obtiennent tous les attributs énumérables de l'objet, Pour les propriétés non dénombrables, aucune des deux méthodes ne peut être obtenue.
Ce qui suit est un objet b, et b est utilisé comme objet prototype de l'objet a :

var b = {bx: 1, by: 2};
Object.defineProperty(b, 'bz', {value: 3});
Object.setPrototypeOf(a, b);
Copier après la connexion

Utilisez la méthode ci-dessus pour afficher la valeur clé de a, et le résultat est le suivant :

Différences dans lutilisation de for...in et Object.keys() pour énumérer les propriétés dobjet en JavaScript (code joint)

Il n'est pas difficile de voir à partir des résultats de sortie que la boucle for...in peut parcourir toutes les propriétés énumérables de l'objet, y compris les propriétés de l'objet prototype, tandis que seul l'objet peut être obtenu via les propriétés propres de Object.keys Enumerable, donc si vous souhaitez obtenir les propres propriétés de l'objet via for...in, vous pouvez filtrer les résultats via la méthode hasOwnProperty :

var keys = [];
for (var key in a) {
    if (a.hasOwnProperty(key)) {
        keys.push(key);
    }
}
Copier après la connexion

Vous pouvez également obtenir l’objet via les propres propriétés de Object.getOwnPropertyNames.

Différences dans lutilisation de for...in et Object.keys() pour énumérer les propriétés dobjet en JavaScript (code joint)

À partir des résultats de sortie ci-dessus, nous pouvons voir que les résultats générés par la méthode getOwnPropertyNames incluent également les propriétés non énumérables de l'objet. Vous pouvez utiliser Object.propertyIsEnumerable pour. déterminer si les propriétés sont énumérables. Pour filtrer les résultats :

Différences dans lutilisation de for...in et Object.keys() pour énumérer les propriétés dobjet en JavaScript (code joint)

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:segmentfault.com
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