Maison >interface Web >Questions et réponses frontales >Comment déterminer si un objet a un certain attribut dans es6
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')".
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!