我有以下(简化)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"
}
}());
JSHintpossible strict violation
在指定的行抱怨a 。我如何解决这个问题而不丢弃"use strict"
?
PS:我想麻烦var _ = this
地引用Batman
实例。
this
在严格模式下传递给函数的值不会强制成为对象。
对于普通函数,this
始终是一个对象,如果使用undefined或null进行调用,则它是全局对象this
,换句话说this
,通常window
在非严格模式下默认为。
自动装箱不仅会降低性能,而且在浏览器中暴露全局对象也存在安全隐患,因为全局对象提供对“安全” JavaScript环境必须限制的功能的访问。
因此,对于严格模式功能,this
不会将指定的对象装箱到对象中,如果未指定,this
则默认情况下将是未定义的。
这意味着使用this
这种方式,只需将其设置为变量
var _ = this;
在大多数情况下this
,这将导致未定义,这就是jshint称其为“可能”违反的原因,就像您不使用它call
并提供this值的情况一样。
忽略jshint,您在做什么就可以了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句