获取类的函数(方法) [英] Get functions (methods) of a class
本文介绍了获取类的函数(方法)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用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屋!
查看全文