JS获取类自身全部方法并执行
首先对于一个object其中自己创建的属性,基本都是可枚举的属性 所以通过
Object.values() //属性的值
Object.keys() //属性名
基本都可以拿到 ,那要是对于自己创建的方法呢,显然是不能拿到的
可以通过Object.getPrototypeof(this) 获得自身的原型
原型中储存着方法 以键值对的方式存储 如:print:()=>{}
把方法变成属性就好操作多 了,但是此时的原型上 属性仍然是不可枚举的,可以通过
Object.getOwnpropertyNames(Object.getPrototypeof(this))
//此时你会获得 一个属性名的数组 ['Print','constructor']
通过字符串访问属性的方式直接执行函数
this['Print']()
加点for循环搞定
//数据去重
class eliminateRepeat {
constructor() {
this.arr = [1, 2, 3, 4, 4, 1, 2, 1];
this.white = ["Print", "constructor"];
}
//set方法
set(){
return Array.from(new Set(this.arr))
}
//filter
filter(){
return this.arr.filter((item,index)=>this.arr.indexOf(item)==index)
}
Print() {
Object.getOwnPropertyNames(Object.getPrototypeOf(this))
.filter((functionName) => {
return !this.white.includes(functionName);
})
.forEach((name) => console.log(this[name]()));
}
}
const P = new eliminateRepeat();
P.Print();