2020-07-21
描述
从一个对象本身(继承为可选项)的枚举属性中返回其值为函数的所有属性。
提示
- 使用
Object.keys(obj)
迭代对象本身的所有属性 - 如果
inherited
为true
,就使用Object.get.PrototypeOf(obj)
来获取对象所继承的属性 - 使用
Array.prototype.filter()
过滤掉值不为函数的属性值 - 第二个参数
inherited
的默认值为false
,表示不包含继承属性
代码
const functions = (obj, inherited = false) =>
(inherited
? [...Object.keys(obj), ...Object.keys(Object.getPrototypeOf(obj))]
: Object.keys(obj)
).filter(key => typeof obj[key] === 'function');
示例
获取下列值为函数的所有属性名称:
function Foo() {
this.a = () => 1;
this.b = () => 2;
}
Foo.prototype.c = () => 3;
functions(new Foo()); // ["a", "b"]
functions(new Foo(), true); // ["a", "b", "c"]