# has
# Description
检查key是否是object的直接属性。
# Params
(object, key)
# Return
Boolean
# Code
const hasOwnProperty = Object.prototype.hasOwnProperty
function has(object, key) {
return object != null && hasOwnProperty.call(object, key)
}
# Analyze
如果 object
不是 null
或者 undefined
,则使用 Object.prototype.hasOwnProperty
进行判断
# Remark
使用 Object.prototype.hasOwnProperty (opens new window) (方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)。),原因在于 有可能 object 原型 或者 原型链上自定义了 hasOwnProperty
方法,使用 Object.prototype.hasOwnProperty.call
就可以得到正确的结果
# Example
function A() {
this.b = 1
}
A.c = 1
const a = new A
a.a = 1
console.log(has(a, 'a')) // true
console.log(has(a, 'b')) // true
console.log(has(a, 'c')) // false