Javascript基础进阶(十一)instanceof、hasOwnProperty、in

纯粹的笔记

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

检测一个属性是否是当前对象的公有属性

  1. 是对象的一个属性
  2. 不是对象的私有属性
// attr 检测的属性
// obj 检测的对象
function hasPubProperty(attr, obj) {
    if ( attr in obj ) {
        if (!obj.hasOwnProperty(attr)) {
            console.log('是公有属性')
        }
    }
}

你可能感兴趣的:(Javascript基础进阶(十一)instanceof、hasOwnProperty、in)