JS - 获取类的成员名称

时间:2014-12-15 17:24:42

标签: javascript

我需要获取类的成员名称(字段和方法)或至少是字段名称。例如,我有以下类:

function PersonClass(){
  this.name="Jack";
  this.surname="SomeOne";
}

我有两个解决方案:

  1. 将类转换为字符串并使用正则表达式
  2. 在课堂上创建方法并使用for ... in this获取成员。但是,要运行此方法,我需要创建类的实例。
  3. 我不喜欢他们两个。是否有其他解决方案来获取会员名称?

2 个答案:

答案 0 :(得分:0)

您可以使用对象的prototype执行此操作。例如,给定类似javascript对象的定义:

var MyObject = function() {

};
MyObject.prototype.foo = 3;
MyObject.prototype.bar = function(){
    alert("bar");
};

这将有效(无需实例):

for(var x in MyObject.prototype)
    alert(x);  // alerts "foo" and then "bar"

以同样的方式实例通常

var o = new MyObject();
for(var x in o)
    alert(x);  // also alerts "foo" and then "bar"

答案 1 :(得分:0)

一旦获得会员名称,您打算怎么办?

为什么你会想到在调用构造函数创建特定实例之前,它们甚至不存在时能以某种方式获取它们?

为什么你会认为你可以编写一个如此聪明的正则表达式,它可以很好地解析JS以提取所有属性(而不是"字段")?这样的正则表达式如何可能识别由其他地方定义的原型方法动态和有条件地添加的属性?

如果你想记录这样的元数据,那么只需要明确地这样做,很可能是作为构造函数的属性:

PersonClass.properties = ['name', 'surname'];

在一些远程版本的JS中,您可以通过注释来执行此操作:

@properties('name', 'surname')
function PersonClass() { ...