警告 - 全局 this 对象的危险使用

2023-11-23

在 Google Closure Compiler 中我收到警告

警告 - 全局 this 对象的危险使用

这是一个例子。错误行和偏移量指的是单词的开头this

function aToggle() {
  if(shown)
    toggle.show()
  else
    toggle.hide()
  $(this).text(shown ? 'Click to hide' : 'Click to show')
  shown = !shown
}
link.onclick = aToggle

我只是将其更改为匿名方法,但我正在重复使用aToggle文件中的其他位置,因此需要对其进行命名。

我可以标记aToggle as /**@constructor*/——但它不是构造函数。是否有另一个注释可以用来消除此警告,或者我是否陷入将其标记为构造函数或显示一堆无用警告之间?


Edit:我一直在阅读 Closure: The Definitive Guide,我刚刚意识到您可以简单地添加/** @this {Element} */注解在你的事件处理程序之前让闭包编译器停止抱怨。

See the 关闭编译器警告参考。当您使用时,闭包编译器会发出此警告this在没有注释的函数中/** @constructor */或在prototype一个类的。编译器假设你永远不会使用this当一个函数在另一个对象的上下文中被调用时(这就是事件回调所做的)。

您可能需要更改一些地方才能使闭包编译器停止抱怨此警告:

  • 不要使用link.onclick = ...直接,因为你必须搞乱this and e || window.event。相反,使用 jQuery 来包装事件处理程序,因为jQuery 的事件对象有e.currentTarget.
  • 如果您正在使用this在一个jQuery.each, 代替this与函数的第二个参数。例如。,jQuery.each([1, 2, 3], function(i, val) { ... val ... };.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

警告 - 全局 this 对象的危险使用 的相关文章

随机推荐

  • HTTP 内容长度和分块传输编码。有2GB限制吗?

    是一个HTTPContent Length over 2GB or 4GB现代网络服务器支持吗 HTTP 中的块怎么样Chunked传输编码 可以单独的 HTTP 块 exceed 2GB长度 我需要知道如何使用32 bit integer
  • Java 一起使用“-cp”和“-jar”

    早些时候 我只有一个 jar 文件 并且设置了清单 这样我就可以简单地运行我的程序 java jar MyApp jar 现在 我已将功能分成两个 jar 文件 MyCore jar 和 MyApp jar 以下命令有效 java cp c
  • Java 中如何验证字符串?

    Java 中如何验证字符串 IE 只允许使用字符而不允许数字 电子邮件验证怎么样 java中如何验证字符串 一种常见的方法是使用正则表达式或正则表达式 在Java中你可以使用String matches String regex 方法 使用
  • 如何在 C# 中将带有“T”的日期与字符串相互转换

    我使用以下函数进行转换DateTime从 到string DATE OBJ ToString DATE FORMAT DateTime ParseExact Date string DATE FORMAT null 现在我必须使用以下格式2
  • RGB相似色近似算法

    鉴于在 RGB 中我们可以表示 256 3 种组合 16 777 216 种颜色 并且由于人眼只能区分大约 10 000 000 种颜色 因此显然存在多余的 6 777 216 种 RGB 组合 这些组合在色彩上与对应颜色无法区分 我相信
  • 使用 Jest 测试 i18next 时如何修复“类型错误:无法读取未定义的属性‘类型’”

    我有一个 React 项目 并且包含 i18next 15 0 4 和 react i18next 10 2 0 依赖项 我创建了一个用于使用react i18next 初始化i18next 的模块 并且我正在尝试使用Jest 对该代码进行
  • 如何将父 Div 与子 Div 重叠

    我的 HTML 中有一些 div 其中之一正在加载图像 div 所以我希望它与其父 div 重叠 这是我的代码 div div div div style border 15px solid c1c1c1 width 200px heigh
  • IOException - 无法加载文件

    我有一个显示 GIF 图像的应用程序 如果图像保存在可绘制的文件中 一切正常 我像这样访问它 is context getResources openRawResource R drawable mygif movie Movie deco
  • 如何使用 Firebase 处理查询超时

    我注意到 如果我在 Firebase 中执行查询并且无法访问数据库服务器 则回调将永远等待 或直到再次可以访问服务器 如果这种行为对于所使用的异步方法来说是很自然的 那么有一种简单的方法来指定超时是很有用的 这样您就可以通知用户有关状态的信
  • 如何找到 NSTimer 剩余的时间间隔

    我已经设置了一个NSTimer scheduledTimerWithTimeInterval每20分钟间隔一次的方法 我希望能够找出应用程序进入后台模式时还剩多少时间 如何知道距离间隔还剩多少时间 Thanks 您可以访问 NSTimerf
  • Java 是否包含对编译代码的注释?

    嗯 标题是不言自明的 我在编译一个有很多注释行的项目时想知道这一点 这有点愚蠢 因为 jar 文件不会增加太多 一些字节 但我很好奇这是否会影响具有大量代码和注释的程序 Thanks 不 任何语言 不仅仅是 Java 中的注释通常都会被删除
  • C 中的宽字符输入/输出是否始终读取/写入正确的(系统默认)编码?

    我主要对类 Unix 系统 例如 便携式 POSIX 感兴趣 因为 Windows 似乎对宽字符做了奇怪的事情 执行读取和写入宽字符功能 例如getwchar and putwchar 总是 做正确的事 例如从 utf 8 读取并在设置的语
  • 何时使用 SELECT ... FOR UPDATE?

    请帮助我理解背后的用例SELECT FOR UPDATE 问题1 以下是一个很好的例子SELECT FOR UPDATE应该使用 Given 房间 id 标签 id 名称 room tags room id tag id room id 和
  • 无法解析符号 R,Android Studio 中的 gen 文件夹在哪里?

    我已经从 Android studio 中创建了一个虚拟 Android 项目 并且可以使其运行 但编辑器本身无法找到 R 类 事实上我找不到 gen 文件夹 我认为也许应该将该文件夹添加为源文件夹或类依赖项 但我就是找不到它 有人可以帮忙
  • 带参数的属性

    我在 VB NET 中发现了一些奇怪的东西 以前从未注意到 我有一个班在VB NET有一个带参数的属性我想在其他方面使用该属性C Class通过创建 VB NET 类的对象 但类对象不显示该属性 谁能告诉我是否可以在 C 中访问该属性 如果
  • MS Access 无限期地持有表行锁

    我们使用 MS Access 作为我们的一个系统的 GUI 但我们遇到了一个问题 即 Access 持有基础表或行的锁 这会阻止 SQL Server 对此数据运行任何更新查询 这是有问题的 因为虽然我们的访问前端只需要对此数据的只读访问
  • 用数组填充 (...rest) 参数?

    一些 as3 函数通过使用约定允许任意数量的参数来处理重载 public function doSomething rest void 我所处的情况是 我需要将数组 任意长度 的所有值传递到这种类型的函数中 我不知道如何做到这一点 建议 这
  • 关闭 Rails 2 中 Web 服务的真实性令牌?

    不仅仅是在 HTML 中填写表单 还应该可以只发送包含参数的 post 请求 例如 如果 Accept 标志设置为 application JSON 是否可以关闭真实性令牌在 HTTP 标头中 请求伪造保护的工作原理是检查请求的内容类型 并
  • 创建了奇怪的“Designer1.cs”文件

    Visual Studio 如何将文件链接到相应的 Designer cs 文件 我遇到了一种奇怪的情况 DataSet 设计器和 L2S DBML 设计器都忽略了 DataSet Designer cs 而是创建并使用了 DataSet
  • 警告 - 全局 this 对象的危险使用

    在 Google Closure Compiler 中我收到警告 警告 全局 this 对象的危险使用 这是一个例子 错误行和偏移量指的是单词的开头this function aToggle if shown toggle show els