gpt4 book ai didi

javascript - ES6 : Call instance functions by their names

转载 作者:行者123 更新时间:2023-11-28 14:48:43 24 4
gpt4 key购买 nike

我在其中有许多功能的下一个类(class):

class EventUtils {

constructor(pid) {}
bindEvent1{}
bindEvent2()
...
}

我必须运行这些函数。在 ES5 之前我使用 something like thisthis方法

但是,在重写为 ES6 类之后,这些示例不再起作用。我尝试过下一个代码:

let eventUtils = new EventsUtils();

Object.getOwnPropertyNames(eventUtils.__proto__).forEach((name) => {

if (name.indexOf('bind') > -1) {
let fn = eventUtils[name];
if (typeof fn === "function") fn.apply(null);
}
});

但是这样我的范围 this 就没有在应用函数中定义。进行此类编码的正确方法是什么?

最佳答案

引用proto是你能做的最糟糕的事情之一(它要么不起作用,要么会杀死任何优化),也许一个简单的for循环可以提供帮助:

for(let key of Object.getOwnPropertyNames(Object.getPrototypeOf(eventUtils))){
if(key.includes("Event") && typeof eventUtils[key] === "function"){
eventUtils[key]();
}
}

但是,动态变量名总是一个坏主意......

关于javascript - ES6 : Call instance functions by their names,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45371294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com