今天写IPC 的时候 ,写一个obj注册方法到ipc的功能,希望达到下面的效果:
const register = (obj) => {
for (let prop in obj) {
if (obj.hasOwnPropelet(prop) && typeof prop === 'function') {
ipcMain.registerCommandHandlers(prop.name, prop)
}
}
}
可是 ES6 的 Class 实例化的对象的方法 死活找不到,有人会说了 在prototype上,当然 我上面只是个例子,我都试过了都不行,
最后实现的比较丑,但是基本需求还是达到了
代码如下:
class A {
constructor(x){
this.x = x
}
print(){
console.log(this.x)
}
}
let a = new A(1)
for(let p of Object.getOwnPropertyNames(Object.getPrototypeOf(a))){
let method = a[p];
if (!(method instanceof Function) || method === a.constructor) continue;
console.log(method, p);
}