似乎无法执行传递给变量的函数
Cant seem to execute function passed to a variable
这是一个 jQuery 我正在尝试 运行 的插件。更具体地说,它是语义 Ui 的小部件之一,我试图在已转换的 ES 6/7 环境中在 Aurelia 中利用它。
这个有效:
return $(this.element)[this.methodTrigger]();
但这不是:
let trigger = $(this.element)[this.methodTrigger];
return trigger();
其中 $(...)
是一个 jQuery 选择器,而 this.methodTrigger
只是一个字符串,例如 "rating" 加载语义 UI 评级小部件
我是不是做错了什么?这在 ES6 中是不允许的吗?它是否错误地转换为纯 JS?我是不是脑残了,没有看到明显错误的东西?
从语法上看它应该可以工作...
该值期望 this
引用 jQuery 对象,但是通过在调用它之前将函数分配给变量,您将丢失调用上下文。这意味着它被称为全局函数。您可以使用 .bind
手动设置上下文
let $this = $(this.element);
let trigger = $this[this.methodTrigger].bind($this);
这是一个 jQuery 我正在尝试 运行 的插件。更具体地说,它是语义 Ui 的小部件之一,我试图在已转换的 ES 6/7 环境中在 Aurelia 中利用它。
这个有效:
return $(this.element)[this.methodTrigger]();
但这不是:
let trigger = $(this.element)[this.methodTrigger];
return trigger();
其中 $(...)
是一个 jQuery 选择器,而 this.methodTrigger
只是一个字符串,例如 "rating" 加载语义 UI 评级小部件
我是不是做错了什么?这在 ES6 中是不允许的吗?它是否错误地转换为纯 JS?我是不是脑残了,没有看到明显错误的东西?
从语法上看它应该可以工作...
该值期望 this
引用 jQuery 对象,但是通过在调用它之前将函数分配给变量,您将丢失调用上下文。这意味着它被称为全局函数。您可以使用 .bind
let $this = $(this.element);
let trigger = $this[this.methodTrigger].bind($this);