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"]
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于