解决可能的严格违规行为(并帮助蝙蝠侠拯救哥谭)
Resolve possible strict violation (and help Batman save Gotham)
我有以下(简化的)Batman.js
文件:
(function(){
"use strict";
window.Batman = function(){
// Global references
this.version = "1.0.1";
};
Batman.prototype.saveGotham = function(params) {
var _ = this; // Works fine
destroyGotham.call(_, params);
};
// Private
function destroyGotham(params){
var _ = this; // <!-- "possible strict violation"
}
}());
JSHint抱怨指示行的possible strict violation
。如何在不降低"use strict"
的情况下解决此问题?
PS:我希望麻烦的var _ = this
引用Batman
实例。
在
严格模式下作为this
传递给函数的值不会强制成为对象。
对于普通函数,this
始终是一个对象,如果使用未定义或空this
调用,则它是全局对象,换句话说,this
通常是非严格模式下默认的window
。
自动装箱不仅会带来性能成本,而且在浏览器中公开全局对象也是一种安全隐患,因为全局对象提供了对"安全"JavaScript 环境必须限制的功能的访问。
因此,对于严格模式函数,指定的this
不会框到对象中,如果未指定,则默认情况下将未定义this
。
这意味着以这种方式使用this
,只需将其设置为变量即可
var _ = this;
在大多数情况下,this
是未定义的,这就是为什么 JSint 说这是一个"可能"的违规行为,就像你没有用 call
调用它并提供这个值一样。
忽略jshint,你正在做的事情很好。
相关文章:
- 需要帮助设置json数组
- JQuery需要帮助理解(i,el)
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- 需要帮助谷歌地图方向面板在FancyBox中显示
- 我需要为我的朋友在这个项目上提供帮助
- 使用密码对话框Javascript请求帮助
- JavaScript计算帮助(乘以时间)
- 另一个if(!$scope.$$phase)$scope$apply()szenario-需要帮助才能通关
- Angular ng类需要帮助设置
- {{#each}}内部的Handlebar帮助程序
- php帮助-需要使用字符串回显php
- JavaScript,JQuery.需要帮助才能获得'name'从我的JSON中删除
- jQuery基于下拉选择更新帮助文本
- 需要比特币校验地址和json帮助
- 在JavaScript中处理数组和对象时需要帮助
- JavaScript表单提交帮助
- 需要有关修剪JavaScript的帮助
- 需要帮助自定义幻灯片自动播放
- 需要帮助编写在不使用toString的情况下将十进制转换为二进制的代码
- 解决可能的严格违规行为(并帮助蝙蝠侠拯救哥谭)