对象API总结

对象相关的API

  • Object.getPrototypeOf() 获取对象的原型
  • Object.setPrototypeOf() 设置对象的原型
  • Object.create() 以参数对象作为原型创建对象
  • Object.keys() 获取自身可遍历的所有键名
  • Object.getOwnPropertyNames() 获取参数对象自身的所有自身属性的键名,不管是否可以遍历,不包含继承的属性
  • Object.prototype.isPrototypeOf() 判断实例对象是否参数对象的原型
  • Object.prototype.hasOwnProperty() 判断属性定义在对象自身还是定义在原型链上
  • in 判断对象是否有某个属性,不管是自身的还是继承的
  • for...in 获得对象的所有可遍历属性(不管是自身的还是继承的)

获取对象的所有属性(包括原型链)

function inheritedPropertyNames(obj) {
var props = {};
while(obj) {
Object.getOwnPropertyNames(obj).forEach(function(p) {
props[p] = true;
});
obj = Object.getPrototypeOf(obj);
}
return Object.getOwnPropertyNames(props);
}