检测对象的私有属性
Object.prototype对象中实现的hasOwnPrototype方法
- 用法:f.hasOwnPrototype(‘x’)
- 检测x是否为f的私有属性
检测对象的属性
in操作符
- 用法:‘x’ in f
- 检测x是否为f的属性
检测对象的共有属性(自己实现)
思路:检测当前属性是否出现在当前对象的原型链上
- 对象属性的私有和公有是相对而言的,对子类是公有的属性可能对父类是私有属性
Object.prototype.hasPubPrototype = function hasPubPrototype(attr) {
let proto = Object.getPrototypeOf(this);
while(proto) {
if(proto.hanOwnPrototype(attr)) return true;
proto = Object.getPrototypeOf(proto);
}
return false;
}