它很容易從一個JavaScript對象得到反射,就像下面的代碼。有沒有辦法從「類」或功能,而不是從一個對象反映JavaScript屬性和方法?
var getAllMembers = function (obj) {
var members = {};
members.properties = [];
members.methods = [];
for (var prop in obj) {
if (typeof obj[prop] != 'function')
members.properties.push(prop);
else members.methods.push(prop);
}
return members;
}
function demo_class(na, nb) {
this.a = na;
this.b = nb;
this.funca = function() {
console.log(this.a);
}
this.funcb = function() {
console.log(this.b);
}
}
var x = new demo_class(1234, 4321);
var members = getAllMembers(x);
console.log(members.properties); // [ 'a', 'b' ]
console.log(members.methods); // [ 'funca', 'funcb' ]
我的問題是:有沒有辦法從類或函數而不是從對象獲取屬性和方法?例如,像這樣:
var members = getAllMembers(demo_class); // Only can get '[] []'