关闭

[置顶] JS原生获取对象的所有属性-函数包装

标签: 函数对象继承遍历javascript
738人阅读 评论(0) 收藏 举报
分类:

获得对象的所有属性(不管是自身的还是继承的,以及是否可枚举),可以使用下面的函数。

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

上面代码依次获取obj对象的每一级原型对象“自身”的属性,从而获取Obj对象的“所有”属性,不管是否可遍历。

下面是一个例子,列出Date对象的所有属性。

inheritedPropertyNames(Date)
// [
//  "caller",
//  "constructor",
//  "toString",
//  "UTC",
//  "call",
//  "parse",
//  "prototype",
//  "__defineSetter__",
//  "__lookupSetter__",
//  "length",
//  "arguments",
//  "bind",
//  "__lookupGetter__",
//  "isPrototypeOf",
//  "toLocaleString",
//  "propertyIsEnumerable",
//  "valueOf",
//  "apply",
//  "__defineGetter__",
//  "name",
//  "now",
//  "hasOwnProperty"
// ]

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:20675次
    • 积分:216
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:6篇
    • 译文:0篇
    • 评论:3条
    文章分类
    文章存档