hasownproperty

阅读 / 问答 / 标签

对象的枚举(for in、hasOwnProperty、in、instanceof)

对象取属性值有两种方法: 使用 for...in 遍历对象: 每次循环,会把对象中的一个字符串类型的属性名保存到变量key中。 (可以使用 console.log(typeof key); 验证) 为什么obj.key会输出undefined呢?是因为它被转换为obj["key"]后去obj中去找属性名为“key”的值,而不是把key识别为一个变量,在obj中并没有定义属性“key”,所以是undefined。 那现在给obj添加属性“key”: 会发现每次循环输出属性名为“key”的属性值。 使用 for...in 变量对象时若其 原型 上有 自定义属性 也会拿到。 那如果不想要输出原型上的属性,只要自身属性怎么做呢? hasOwnProperty(“属性名”)可以验证属性是否为对象本身所具有,返回布尔值。 上面循环改为 “属性名” in 对象 判断对象是否有这个属性(包括原型上的属性),即对象是否能访问到这个属性,返回布尔值。 A instanceof B 判断A对象的原型链上是否有B的原型对象。