JavaScript eval() 与 `this`

标签 javascript eval

如果我在 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/

相关文章:

javascript - 为 sveltekit 注册套接字 IO 到 vite

javascript - 更改 raphaeljs svg 上透明对象的交叉区域颜色?

javascript - 尝试获取循环内 var 的数字 ascii

javascript - 如何使用 ajax 数据填充 vuetify 选择框

Python C API - 如何为 eval 表达式赋值?

javascript - jQuery 自动完成功能,用于为 ajax 调用动态创建输入

Javascript : Eval external script within defined namespace

r - 使用字符串作为函数的参数

javascript - 在 ajax 中运行 javascript 外部链接甚至内部链接

python - 在不使用 Eval 的情况下将字符串转换为 Python 中的列表?