Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Bagaimana untuk menentukan sama ada objek mempunyai atribut tertentu dalam es6

Bagaimana untuk menentukan sama ada objek mempunyai atribut tertentu dalam es6

青灯夜游
青灯夜游asal
2022-04-11 15:15:185039semak imbas

Kaedah penghakiman: 1. Gunakan pernyataan "object.property! == undefined" untuk menentukan Jika nilai pulangan adalah benar, maka terdapat atribut tertentu pada objek 2. Gunakan "'. property name' in object" statement , jika ia mengembalikan true, terdapat atribut tertentu; 3. Gunakan pernyataan "object.hasOwnProperty('property name')".

Bagaimana untuk menentukan sama ada objek mempunyai atribut tertentu dalam es6

Persekitaran pengendalian tutorial ini: sistem Windows 7, ECMAScript versi 6, komputer Dell G3.

es6 menentukan sama ada objek mempunyai atribut tertentu

Kaedah 1: titik (.) undefined untuk menentukan

Kita tahu bahawa nilai atribut objek boleh diperolehi melalui titik atau kurungan segi empat sama Jika atribut tidak wujud pada objek, undefined akan dikembalikan. Kaedah ini boleh menentukan sifat sendiri dan sifat warisan bagi objek yang ditentukan Jika objek itu sendiri tidak mempunyai sifat yang dikesan dan harta tersebut berada pada rantai prototaip, nilai harta pada rantai prototaip akan dikembalikan.

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

Ringkasnya, kita boleh menggunakan nilai pulangan Object.propertyName !== undefined untuk menentukan sama ada objek itu mengandungi sifat tertentu. Tetapi terdapat satu situasi, iaitu, jika nama atribut wujud dan nilai atribut tidak ditentukan, hasil yang diinginkan tidak boleh dikembalikan.

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

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

Nah, kita boleh menggunakan operator dalam untuk menyelesaikan masalah ini.

Kaedah 2: dalam operator

Kaedah ini boleh menentukan sama ada atribut tertentu wujud dalam sifat sendiri dan sifat warisan objek yang ditentukan, dan mengembalikan benar jika wujud . Operator dalam juga boleh mengesan sifat pada rantai prototaip. Sintaks operator

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

dalam juga sangat mudah skop dan kesannya adalah sama seperti titik (.) atau kurungan segi empat sama ([]). nilai juga boleh berfungsi secara normal.

  • Keterbatasan kedua-dua kaedah di atas ialah mereka tidak dapat membezakan dengan tepat antara atribut milik sendiri dan atribut pada rantai prototaip. Jika anda ingin menyemak sama ada sifat anda sendiri wujud, anda memerlukan Object.hasOwnProperty().

Kaedah 3: Object.hasOwnProperty()

Object.hasOwnProperty() digunakan untuk menentukan sama ada objek yang ditentukan itu sendiri mengandungi sifat tertentu (bukan Diwarisi), mengembalikan nilai Boolean.

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

Kaedah ini akan menapis atribut yang diwarisi tersebut dan mengembalikan benar apabila atribut yang dikesan ialah atributnya sendiri.

[Cadangan berkaitan: tutorial video javascript, bahagian hadapan web]

Atas ialah kandungan terperinci Bagaimana untuk menentukan sama ada objek mempunyai atribut tertentu dalam es6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn