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')".
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!