警告 - 全局 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 对象的危险使用 的相关文章

  • 将值设置为输入字段时,西班牙语文本无法正确显示

    我正在尝试将西班牙语文本设置到输入字段 但它似乎没有正确显示 但是 如果相同的文本位于 div 内部或已设置为输入字段的值 则该文本可以正常显示 HTML div Cuenta de Ahorros Persona F iacute sic
  • Javascript 闭包 - 变量范围问题

    我正在阅读 Mozilla 开发者网站上有关闭包的内容 我注意到在他们的常见错误示例中 他们有以下代码 p Helpful notes will appear here p p E mail p
  • Javascript“this”在 IE 中丢失上下文

    以下在 firefox safari chrome 中工作正常 在 IE 中 this 似乎在 handleEvent 函数中丢失上下文 警报的结果是 object Window 这不是我想要的 当从handleEvent 输出时 this
  • 获取 CRM 2011 中功能区按钮的 ID

    我创建了一个 JavaScript 我想在其中隐藏功能区Reactivate Lead按钮取决于某些条件 我通过在表单上按 F12 获得了按钮的 ID 即lead NoRelationship Form Mscrm Form lead Re
  • D3更新circle-pack数据新节点与现有节点重叠

    我正在关注一般更新模式 http bl ocks org mbostock 3808234但在分层方面存在问题 使用圆形包装布局 我pack新数据 update enter and exit圆形元素 然而 当新元素enter 它们重叠upd
  • 有没有办法让 jslint 在 javascript 的下一行中使用大括号?

    我改变了我的编码风格 function getParams entity use strict var accountID store getItem AccountID switch entity case Topic to functi
  • CSS 内边框?

    我纯粹用 CSS 创建了左侧的按钮 它是一个div 中的一个div 然而 右侧的三个按钮是background属性于img标签 我这样做是为了按照以下说明模拟翻转效果here http kyleschaeffer com best prac
  • 如何用 JavaScript 修复图像透视变形和旋转?

    我有一些用手机拍摄的图像 有没有可以拉直纸张照片并将其压平的 JavaScript 库 例如 我想创建一个矩形图像 该图像没有任何失真 换句话说我想知道如何用 JavaScript 修复透视变形和旋转 例如 我发现下面的示例图像来自this
  • 纯 JS 相当于 Jquery eq()

    jquery 的纯等价物是什么eq 例如 我怎样才能实现 class1 class2 eq 0 text 1254 在纯 JavaScript 中 要获取数组中的元素索引 可以使用 在 JavaScript 中 因此 要重现您的代码 您可以
  • 在 UIWebView 中禁用复制和粘贴

    几乎 我已经尝试了一切方法来禁用复制 粘贴UIWebView但对我来说没有任何作用 我正在加载我的UIWebView来自字符串 字符串数组 如下所示 webView loadHTMLString NSString stringWithFor
  • 如何将本地文本文件上传到文本区域(网页内)

    我是一名新手程序员 需要一些帮助来弄清楚如何将本地文本文件上传到我正在构建的网站内的文本区域 我非常精通 HTML CSS 对 Javascript JQuery 有相当的了解 而且我刚刚学习 PHP 您能提供的任何帮助我将不胜感激 我有一
  • 对使用“new”创建的数组上“map”的行为感到困惑[重复]

    这个问题在这里已经有答案了 我对结果感到困惑mapping 使用创建的数组new function returnsFourteen return 14 var a new Array 4 gt undefined x 4 in Chrome
  • 在循环中调用 setTimeout 未按预期工作

    下面的 JavaScript 应该 在我看来 以 0 5 秒的间隔播放一系列音符 但它会将它们全部作为一个同时的和弦来演奏 知道如何修复它吗 function playRecording if notes length gt 0 for v
  • 检查浏览器空闲的替代方法

    我有一个简单的网络信息亭 在鼠标未使用 jQuery 移动 30 秒后显示用户操作提示 var i null body wrap mousemove function clearTimeout i overlay fadeOut i set
  • 如何将项目插入到特定索引处的空数组中?

    我想将一个项目插入到空数组的指定索引中 我看到有 Array prototype splice 方法 但是 如果我在空数组上使用 splice 它只会添加项目来结束数组 如下所示 var a a splice 3 0 item 3 cons
  • 什么时候可以使用Javascript,什么时候不可以?

    不使用太多 javascript jquery 是个好习惯吗 我们应该尽可能避免它 为了良好的可访问性 吗 什么时候可以使用 JavaScript 什么时候不能在网页设计和开发中使用 JavaScript 在什么场景 什么条件下 Updat
  • highchart堆积柱每个类别的总数据

    我想获取每个类别的总数据 这point stackTotal只给出活动数据的总数 从我粘贴的代码示例中 我想知道每种水果的总消耗量 因此 即使我单击右上角图例上的乔的名字 这使得堆叠图表上的所有乔信息都处于非活动状态 我仍然可以知道约翰 简
  • VS Code 扩展 - 获取完整路径

    我正在为 VS Code 编写一个插件 我需要知道调用扩展的文件的路径 无论是从编辑器上下文菜单或资源管理器上下文菜单调用还是用户只需键入扩展命令 function activate context get full path of the
  • Html5画布最热门的任意形状

    我正在尝试开发可以在画布中渲染图像和文本的程序 我尝试处理画布中图像的点击 但它适用于可矩形图像 我的问题 您是否知道处理单击画布中图像的可见部分 非透明部分 的解决方案或框架 我正在寻找 ActionScript hitTestObjec
  • 在 Firestore 文本字段中存储文本文件并删除换行符

    我正在尝试将 CSV 文件存储在 Cloud Firestore 内的文本字段中 然而 Firestore 正在删除所有换行符并将整个 CSV 文件存储为一行 这Firestore 数据类型文档 https firebase google

随机推荐

  • 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