Skip to content

Latest commit

 

History

History
38 lines (29 loc) · 1.17 KB

functions.md

File metadata and controls

38 lines (29 loc) · 1.17 KB
标题 标签
functions(函数属性名数组) object,function(对象,函数)

从对象自己的(和可选继承的)可枚举属性中获取函数属性名称数组。

  • 使用 Object.keys() 迭代对象自己的属性。
  • 如果 inherited 为真,则使用 Object.getPrototypeOf() 来获取对象的继承属性。
  • 使用 Array.prototype.filter() 仅保留那些作为函数的属性。
  • 省略第二个参数,inherited,默认情况下不包括继承的属性。
const functions = (obj, inherited = false) =>
  (inherited
    ? [...Object.keys(obj), ...Object.keys(Object.getPrototypeOf(obj))]
    : Object.keys(obj)
  ).filter(k => typeof obj[k] === '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']

应用场景

结果如下:

<iframe src="codes/javascript/html/functions.html"></iframe>