我试图使用变量的值作为函数名来调用类的函数,并想知道这是否真的可行。
说我有以下内容:
let functionArray = [
{fctn1 : 'sayHello'},
{fctn2 : 'sayGoodbye'}
];
module.exports = class subItem extends Item {
constructor(parent, option) {
if (!option) return;
super(parent, option);
// Below is what I am trying to do.
// trying to call 'this.sayHello()'
this.[functionArray.fctn1];
}
sayHello(){ console.log('hello'); }
sayGoodbye(){ console.log('goodbye'); }
}
如何使用变量的值作为函数名称来调用对象/类的函数?我很欣赏这可能听起来很奇怪,但希望有人可能知道:)
感谢您的帮助。
答案 0 :(得分:1)
您缺少()
来调用函数,还需要在[]
之前删除点:
this[functionArray.fctn1]();
说明:要访问对象的属性(方法也是属性),可以使用点表示法或方括号:
this.sayHello();
// or
this['sayHello']();
答案 1 :(得分:1)
首先,当使用字符串获取对象的属性时,您不需要.
,而是语法只是object['string']
。第二个是调用你需要的函数,最后包括括号()
。
答案 2 :(得分:0)
对于全局函数:
window["functionName"](arguments);
如果是命名空间函数:
window["My"]["Namespace"]["functionName"](arguments);