如何获取'获取'属性

How to get a list of 'get' properties?

本文关键字:获取 何获取 属性      更新时间:2023-09-26

假设我有一些对象:

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

如何检索对象的getter?

循环遍历所有属性名称,并向下筛选到属性描述符具有get属性的名称。

function Foo() { }
Foo.prototype = { 
  get id() { return this._id; },
  otherfunc() { }
};
function getGetters(obj) {
  var proto = obj.prototype;
  return Object.getOwnPropertyNames(proto)
    .filter(name => Object.getOwnPropertyDescriptor(proto, name).get);
}
    
console.log(getGetters(Foo));

要获得具有"getter"函数的属性列表,请使用以下Object.keysObject.getOwnPropertyDescriptorArray.filter函数的方法:

function Org(){};
Org.prototype = {
    constructor  : Org,
    get id(){ return this._id; },
    some_method: function(){}
};
propList = Object.keys(Org.prototype).filter(function (p) {
    return typeof Object.getOwnPropertyDescriptor(Org.prototype, p)['get'] === "function"
});
console.log(propList);

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor