怎样获取对象的所有属性

使用Object.keys()可以获取对象本身所有的可遍历属性;

使用Object.getOwnPropertyNames()可以获取对象本身所有属性, 不管是否可遍历;

使用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);
}

这个函数的执行逻辑是: 遍历所有当前对象的属性, 完成后把原型赋值给当前对象, 继续下一轮循环, 直到: Object.getPrototypeOf(Object.prototype.__proto__)为止;

原文地址:https://www.cnblogs.com/aisowe/p/11686935.html

时间: 2024-11-08 10:28:43

怎样获取对象的所有属性的相关文章

获取对象的所有属性&&获取对象的所有方法

#import <objc/runtime.h> @implementation NSObject (PropertyListing) /* 获取对象的所有属性 */ - (NSDictionary *)properties_aps { NSMutableDictionary *props = [NSMutableDictionarydictionary]; unsigned int outCount, i; objc_property_t *properties = class_copyPr

Java 获取对象的所有属性及其对应的值

利用反射获取对象的所有属性及对应的值 1.获取属性名数组 private static String[] getFiledName(Object o) { Field[] fields = o.getClass().getDeclaredFields(); String[] fieldNames = new String[fields.length]; for (int i = 0; i < fields.length; i++) { fieldNames[i] = fields[i].getN

【转】js获取对象的所有属性和方法

//有时候需要知道一个js对像的所有属性和方法来帮助调试,下面是再网上找到的一个比较给力的方法 function displayProp(obj){ var names=""; for(var name in obj){ names+=name+": "+obj[name]+", "; } alert(names); } 转自 http://blog.csdn.net/clh604/article/details/8233812

java获取对象属性类型、属性名称、属性值

因为项目需要用到,于是简单封装了一些常用的操作: [java] view plaincopy /** * 根据属性名获取属性值 * */ private Object getFieldValueByName(String fieldName, Object o) { try { String firstLetter = fieldName.substring(0, 1).toUpperCase(); String getter = "get" + firstLetter + field

Python快速学习-获取对象信息

1type() 获取对象的基本类型,判断两个对象类型. 2types 判断对象是否是函数,使用前要引入import types 3isinstance() 判断class类型,判断一个变量是否是某种类型中的一种,基本上能用type判断,都可以用isinstance. 4.dir() 获取对象的所有属性和方法.

python 获取对象信息

当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: >>> type(123) <type 'int'> >>> type('str') <type 'str'> >>> type(None) <type 'NoneType'> 如果一个变量指向函数或者类,也可以用type()判断: >&

python 之获取对象信息

当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: >>> type(123) <class 'int'> >>> type('str') <class 'str'> >>> type(None) <type(None) 'NoneType'> 如果一个变量指向函数或者类,也可以用type()判

Java--反射之获取对象信息

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制 在学设计模式的时候,我们看到过一句话:"反射反射,程序员的快乐",当时对这句话没有很深刻的认识,到学习了struts.spring等之后,感觉到反射真是很强大的存在. 我们今天介绍如何通过java的反射,获取对象的信息.需求是这样的:有一个实体,实体里面有多个属性,通过这个实体中有

python中多重继承与获取对象

1.python中多重继承 除了从一个父类继承外,Python允许从多个父类继承,称为多重继承. 多重继承的继承链就不是一棵树了,它像这样: class A(object): def __init__(self, a): print 'init A...' self.a = a class B(A): def __init__(self, a): super(B, self).__init__(a) print 'init B...' class C(A): def __init__(self,