如果我在 HTML 中定义 JavaScript 代码片段,如下所示:
<div id=myElem onMyUpdate="alert('Update called for ' + this.id)">...
那么在 JavaScript 中正确分配 this
来评估它的最优雅的方法是什么?
到目前为止我想到的是这样的:
if (elem.hasAttribute('onMyUpdate'))
(function () { eval(elem.getAttribute('onMyUpdate')) }).call(elem);
(对我来说)这看起来很糟糕,但很有效。有更好/更优雅的选择吗?
MDN 说 eval() 曾经有第二个参数来做到这一点,但现在已被弃用;然后,MDN 建议改用运算符 with(),如果您按照提供的链接进行操作,结果会发现最新标准已弃用该运算符。换句话说,死胡同。
(顺便说一句,StackOverflow 会忽略搜索词中的单词 this
,因此它可能会错过相关答案 - 有没有办法告诉它不要这样做?)
编辑:我忘了提及:请不要使用 jQuery,只需使用普通 JavaScript
最佳答案
这个怎么样:
if(elem.hasAttribute('onMyUpdate')) {
var fun = new Function(elem.getAttribute('onMyUpdate'));
fun.call(elem);
}
关于JavaScript eval() 与 `this`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12664963/