Heim  >  Artikel  >  Web-Frontend  >  So ermitteln Sie, ob ein Objekt in es6 ein bestimmtes Attribut hat

So ermitteln Sie, ob ein Objekt in es6 ein bestimmtes Attribut hat

青灯夜游
青灯夜游Original
2022-04-11 15:15:184969Durchsuche

Beurteilungsmethode: 1. Verwenden Sie die Anweisung „object.property name!== undefiniert“, um festzustellen, ob der Rückgabewert wahr ist, dann gibt es ein bestimmtes Attribut für das Objekt object“-Anweisung, wenn sie true zurückgibt. Dann gibt es ein bestimmtes Attribut; 3. Verwenden Sie die Anweisung „object.hasOwnProperty('property name')“.

So ermitteln Sie, ob ein Objekt in es6 ein bestimmtes Attribut hat

Die Betriebsumgebung dieses Tutorials: Windows 7-System, ECMAScript Version 6, Dell G3-Computer.

es6 Bestimmen Sie, ob das Objekt ein bestimmtes Attribut hat

Methode 1: Punkt (.) + undefiniert zur Bestimmung

Wir wissen, dass der Attributwert des Objekts durch Punkte oder eckige Klammern erhalten werden kann. Wenn das Objekt nicht vorhanden ist, wird die Eigenschaft undefiniert zurückgegeben. Diese Methode kann die eigenen Eigenschaften und geerbten Eigenschaften des angegebenen Objekts ermitteln. Wenn das Objekt selbst keine erkannte Eigenschaft hat und sich die Eigenschaft in der Prototypenkette befindet, wird der Eigenschaftswert in der Prototypenkette zurückgegeben.

// 创建对象
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
})

Einfach können wir den Rückgabewert von Object.propertyName !== undefiniert verwenden, um festzustellen, ob das Objekt eine bestimmte Eigenschaft enthält. Es gibt jedoch eine Situation: Wenn der Attributname vorhanden ist und der Attributwert nicht definiert ist, kann das gewünschte Ergebnis nicht zurückgegeben werden.

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

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

Nun, wir können den in-Operator verwenden, um dieses Problem zu lösen.

Methode 2: in-Operator

Diese Methode kann ermitteln, ob ein bestimmtes Attribut in den eigenen Eigenschaften und geerbten Eigenschaften des angegebenen Objekts vorhanden ist, und gibt true zurück, wenn es vorhanden ist. Der in-Operator kann auch Eigenschaften in der Prototypenkette erkennen. Die Syntax des

rrree

in-Operators ist ebenfalls sehr einfach. Der Umfang und die Wirkung sind die gleichen wie bei Punkten (.) oder eckigen Klammern ([]). Der Unterschied besteht darin, dass Attribute mit dem Wert undefiniert auch normal beurteilt werden können .

  • Die Einschränkung der beiden oben genannten Methoden besteht darin, dass sie nicht genau zwischen eigenen Attributen und Attributen in der Prototypenkette unterscheiden können. Wenn Sie prüfen möchten, ob eigene Eigenschaften vorhanden sind, benötigen Sie Object.hasOwnProperty().

Methode 3: Object.hasOwnProperty()

Object.hasOwnProperty() wird verwendet, um zu bestimmen, ob das angegebene Objekt selbst eine bestimmte Eigenschaft enthält (nicht geerbt) und einen booleschen Wert zurückgibt.

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

Diese Methode filtert diese geerbten Attribute heraus und gibt „true“ zurück, wenn das erkannte Attribut ein eigenes Attribut ist.

【Verwandte Empfehlungen: Javascript-Video-Tutorial, Web-Frontend

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie, ob ein Objekt in es6 ein bestimmtes Attribut hat. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn