typeof
对变量执行 typeof 操作时,得到的结果并不是该变量的类型,而是该变量持有的值的类型,因为JavaScript 中变量没有类型,只有值才有。
instanceof
判断对象 p 是否在 Person 的原型对象上
function Person(){}
var p = new Person()
p instanceof Person // true
// 区分数组和对象
var o = {}
var a = []
o instanceof Array // false
a instanceof Array // true
in
判断一个对象实例或原型中是否有某个属性。
// 数组的push方法在原型对象中
var arr = new Array(1,2,3,4);
console.log('push' in arr); // true
所以 for(var key in p) 不准确,会把整个原型链上的属性都拿到,最好使用 Object.keys(p)
判断对象的某个属性只在原型中存在
function isProperty(object,property){
return !object.hasOwnProperty(property) && (property in object)
}
function Box(){}
Box.prototype.name = 'lee'
var box1 = new Box();
isProperty(box1,'name') // true