functions - 返回一个函数属性名称数组
优质
小牛编辑
134浏览
2023-12-01
从一个对象的自身(是否继承可选)可枚举属性返回一个函数属性名称数组。
使用 Object.keys(obj)
来迭代对象的自身属性。 如果 inherited
是 true
,则使用 Object.get.PrototypeOf(obj)
来获得对象的继承属性。 使用 Array.filter()
只保留那些函数的属性。 省略第二个参数 inherited
,默认情况下不包含继承的属性。
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']