Javascript 如何获取“获取”属性的列表?

Javascript 如何获取“获取”属性的列表?,javascript,properties,Javascript,Properties,假设我有一些目标: Org.prototype = { constructor : Org, get id(){ return this._id; }, some_method: function(){}, etc... 如何检索对象的getter?循环遍历所有属性名,并向下过滤到只有那些属性描述符具有get属性的属性 函数Foo{} Foo.prototype={ 获取id{返回此。\u id;}, 其他函数{} }; 函数gettersobj{ var proto=obj.pr

假设我有一些目标:

Org.prototype = {
 constructor  : Org,
 get id(){ return this._id; },
 some_method: function(){},
 etc...

如何检索对象的getter?

循环遍历所有属性名,并向下过滤到只有那些属性描述符具有get属性的属性

函数Foo{} Foo.prototype={ 获取id{返回此。\u id;}, 其他函数{} }; 函数gettersobj{ var proto=obj.prototype; return Object.getOwnPropertyNamesproto .filtername=>Object.getOwnPropertyDescriptorproto,name.get; }
console.loggettersfoo 要获取具有getter函数的属性列表,请使用Object.keys、Object.getOwnPropertyDescriptor和Array.filter函数的以下方法:

职能组织{}; Org.prototype={ 构造函数:Org, 获取id{返回此。\u id;}, 一些方法:函数{} }; propList=Object.keysOrg.prototype.filterfunction p{ 返回Object.getOwnPropertyDescriptorOrg.prototype的类型,p['get']==函数 };
console.logpropList;您需要检索属性描述符,并检查哪些描述符具有get属性。您应该解决您的问题,因此它不是说have get prefix`,而是说have getters defined,我认为这是您的意思。它的阅读方式现在至少让一个人困惑了。@torazaburo我解决了这个问题,谢谢。如果必要的话,还可能遍历原型链。除非我大错特错,否则属性描述符上的get属性将始终是一个函数。@torazaburo,当然,但只有在属性描述符中存在get时才是如此。否则,typeof undefined==='function'