Maison >interface Web >Questions et réponses frontales >Comment déterminer si un objet a un certain attribut dans es6

Comment déterminer si un objet a un certain attribut dans es6

青灯夜游
青灯夜游original
2022-04-11 15:15:185039parcourir

Méthode de jugement : 1. Utilisez l'instruction "object.property name!== undefined" pour déterminer. Si la valeur de retour est vraie, alors il y a un certain attribut sur l'objet ; 2. Utilisez le "'property name' dans object", si elle renvoie true Alors il y a un certain attribut ; 3. Utilisez l'instruction "object.hasOwnProperty('property name')".

Comment déterminer si un objet a un certain attribut dans es6

L'environnement d'exploitation de ce tutoriel : système Windows 7, ECMAScript version 6, ordinateur Dell G3.

es6 Déterminer si l'objet a un certain attribut

Méthode 1 : Point (.) + non défini pour déterminer

Nous savons que la valeur d'attribut de l'objet peut être obtenue par des points ou des crochets. Si l'objet n'existe pas, propriété, il renverra undéfini. Cette méthode peut déterminer les propriétés propres et les propriétés héritées de l'objet spécifié. Si l'objet lui-même n'a pas de propriété détectée et que la propriété se trouve sur la chaîne prototype, la valeur de la propriété sur la chaîne prototype sera renvoyée.

// 创建对象
let obj = {
    name: 'Scarlett',
    age: 37
}
console.log(obj.name !== undefined)  // true 自身属性存在
console.log(obj.gender !== undefined)  // false gender属性不存在

// 在原型上添加一个可枚举属性
Object.prototype.nationality = 'America'

// 在obj对象上添加一个不可枚举属性
Object.defineProperty(obj, 'occupation', {
    value: 'actress',
    enumerable: false
})

Simplement, nous pouvons utiliser la valeur de retour de Object.propertyName !== undefined pour déterminer si l'objet contient une certaine propriété. Mais il existe une situation : si le nom de l'attribut existe et que la valeur de l'attribut n'est pas définie, le résultat souhaité ne peut pas être renvoyé.

// 新增一个值为undefined的属性
obj.birthday = undefined

console.log(obj.birthday !== undefined)  // false

Eh bien, nous pouvons utiliser l'opérateur in pour résoudre ce problème.

Méthode 2 : opérateur in

Cette méthode peut déterminer si un certain attribut existe dans les propriétés propres et les propriétés héritées de l'objet spécifié, et renvoie vrai s'il existe. L'opérateur in peut également détecter des propriétés sur la chaîne prototype. La syntaxe de l'opérateur

'name' in obj  // true 自身属性存在
'occupation' in obj  // true 不可枚举属性存在
'nationality' in obj  // true 继承属性
'birthday' in obj  // true 值为undefined的属性

in est également très simple. La portée et l'effet sont les mêmes que ceux des points (.) ou des crochets ([]). La différence est que les attributs avec une valeur indéfinie peuvent également être jugés normalement. .

  • La limitation des deux méthodes ci-dessus est qu'elles ne peuvent pas distinguer avec précision entre leurs propres attributs et les attributs de la chaîne prototype. Si vous souhaitez vérifier si vos propres propriétés existent, vous avez besoin de Object.hasOwnProperty().

Méthode 3 : Object.hasOwnProperty()

Object.hasOwnProperty() est utilisé pour déterminer si l'objet spécifié lui-même contient une certaine propriété (non héritée) et renvoie une valeur booléenne.

obj.hasOwnProperty('name')  // true 自身属性
obj.hasOwnProperty('occupation')  // true 不可枚举属性
obj.hasOwnProperty('birthday')  // true
obj.hasOwnProperty('nationality')  // false 原型链上继承的属性

Cette méthode filtrera ces attributs hérités et retournera vrai lorsque l'attribut détecté est son propre attribut.

【Recommandations associées : tutoriel vidéo javascript, front-end web

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!

Déclaration:
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