纯粹的笔记
instanceof
用来检测当前实例是否属于某个类
function Fn() {
}
var f = new Fn
f instanceof Fn // true
instanceof 解决了type无法识别数组和正则的问题
[] instanceof Array // true
in
用来检测当前属性是否属于对象,不管是私有的还是共有的,只要有就返回true
var obj = { name: 'ggr'}
'name' in obj // true
'hasOwnProperty' in obj // true
因为那么在obj的私有属性上,所以为true。hasOwnProperty在obj的公有属性,所以也是true。
hasOwnProperty
用来检测当前这个属性是否是对象的私有属性
var obj = { name: 'ggr'}
obj.hasOwnProperty('name') // true
obj.hasOwnProperty('hasOwnProperty') // false
检测一个属性是否是当前对象的公有属性
- 是对象的一个属性
- 不是对象的私有属性
// attr 检测的属性
// obj 检测的对象
function hasPubProperty(attr, obj) {
if ( attr in obj ) {
if (!obj.hasOwnProperty(attr)) {
console.log('是公有属性')
}
}
}