获取类的函数(方法) [英] Get functions (methods) of a class

查看:128
本文介绍了获取类的函数(方法)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须动态地获取ES6类的属性和功能。这是甚么可能吗?



使用for ... in循环,我只能遍历一个类实例的属性:

  class Foo {
constructor(){
this.bar =嗨;
}
someFunc(){
console.log(this.bar);
}
}
var foo = new Foo();
for(var idx in foo){
console.log(idx);
}

输出:

  bar 


解决方案

该功能将获得所有功能。继承与否,无可否认。包括所有功能。

  function getAllFuncs(obj){
var props = [];

do {
props = props.concat(Object.getOwnPropertyNames(obj));
} while(obj = Object.getPrototypeOf(obj));

return props.sort()。filter(function(e,i,arr){
if(e!= arr [i + 1]&& typeof obj [e] =='function')return true;
});
}

做测试



getAllFuncs([1,3]);



控制台输出:

  [constructor,toString,toLocaleString,join,pop push,concat,reverse,shift,unshift,slice,splice,sort,filter,forEach,some,every ,indexOf,lastOutProperty,isPrototypeOf,to, propertyIsEnumerable,__defineGetter__,__lookupGetter__,__defineSetter__,__lookupSetter__] 


I have to dynamically fetch the properties and functions of a ES6 class. Is this even possible?

Using a for...in loop, I only get to loop through the properties of a class instance:

class Foo {
  constructor() {
    this.bar = "hi";
  }
  someFunc() {
    console.log(this.bar);
  }
}
var foo = new Foo();
for (var idx in foo) {
  console.log(idx);
}

Output:

bar

解决方案

This function will get all functions. Inherited or not, enumerable or not. All functions are included.

function getAllFuncs(obj) {
    var props = [];

    do {
        props = props.concat(Object.getOwnPropertyNames(obj));
    } while (obj = Object.getPrototypeOf(obj));

    return props.sort().filter(function(e, i, arr) { 
       if (e!=arr[i+1] && typeof obj[e] == 'function') return true;
    });
}

Do test

getAllFuncs([1,3]);

console output:

["constructor", "toString", "toLocaleString", "join", "pop", "push", "concat", "reverse", "shift", "unshift", "slice", "splice", "sort", "filter", "forEach", "some", "every", "map", "indexOf", "lastIndexOf", "reduce", "reduceRight", "entries", "keys", "constructor", "toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "__defineGetter__", "__lookupGetter__", "__defineSetter__", "__lookupSetter__"]

这篇关于获取类的函数(方法)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆