Skip to content

成员检测

检查一个对象是否拥有某个属性,这就是成员检测。

in

可以用in关键字来检测对象是否拥有某个属性,如果属性存在返回true,否则返回false。它还会检查原型链上是否存在属性,如果只想看它本身的属性可以用Object.hasOwn()

js
const user = {name: 'zs'}

'name' in user  // true
'toString' in user // true,原型上的属性也会被检测到
'age' in user  // false

它还可以检测数组,检测数组的下标是否存在,也会检测到原型链上的属性。

js
const list = ['a', 'b', 'c']

0 in list  // true
'a' in list  // false,这里检查的是下标,不是元素值
'toString' in list  // true,原型链上的属性会被检测到

Object.hasOwn()

这个方法只会检查对象自身的属性,不会查找原型链。大多数时候你可能需要的是这个方法

语法:Object.hasOwn(obj, name) 参考

js
const user = {name: 'zs'}

Object.hasOwn(user, 'name')  // true
Object.hasOwn(user, 'age')  // false
Object.hasOwn(user, 'toString') // false,不会查找原型链