看起来你应该能够做到这一点,因为如果逻辑可以在类的非法编写中编写,那么基于类定义(Angular)动态构建表单会更好。这是可扩展的,因此向类添加字段也不需要更新生成表单和模板的逻辑。
有没有办法做到这一点,甚至是NPM模块会做到这一点?
我发现我可以做ClassName.toString()
但解析它会很痛苦。而且我可能会写一个模块来做其他事情。
我只是觉得为枚举其属性而实例化类的虚拟实例是一种糟糕的策略。
答案 0 :(得分:1)
您可以使用Object.getOwnPropertyNames()
。
示例类:
class Foo {
setBar() {
throw Error('not implemented');
return false;
}
getBar() {
throw Error('not implemented');
return false;
}
}
然后
Object.getOwnPropertyNames(Foo.prototype)
结果
["constructor", "setBar", "getBar"]
在我研究这个问题时,我首先调查了Object.keys
,虽然它没有用,但您可能希望参考the documentation for Object.keys
's polyfill。它包含用于删除constructor
,toString
等的代码,以及正确实施hasOwnProperty
。
答案 1 :(得分:0)
任何方式?将您的类声明为函数,并将属性放在原型上:
var Presidents = function() {
};
Presidents.prototype = {
"washington" : "george",
"adams" : "john"
}
console.log(Object.keys(Presidents.prototype))
// Output is
// [ 'washington', 'adams' ]