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

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

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"
// ]

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sunxinty/article/details/52355058
个人分类: javascript Jquery
上一篇JS原生获取class对象(getElementsByClassName)
下一篇时间一到,开抢月饼(原生JS简单实现定时自动点击事件)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭