Google 闭包编译器中的“全局此对象的危险使用”警告
"dangerous use of the global this object" warning in Google Closure Compiler
我有一些代码看起来像这样:
var MyObject = function () {
this.Prop1 = "";
this.Prop2 = [];
this.Prop3 = {};
this.Prop4 = 0;
}
然后我后来有了这个:
var SomeObject = new MyObject();
当我在高级模式下通过闭包编译器运行代码时,我在我有this.Prop =
的每一行上都会收到警告dangerous use of the global this object
正在做什么是"危险"的,我应该如何重写我的代码?
感谢您的建议。
我建议这样写:
function MyObject() {
this.Prop1 = "";
this.Prop2 = [];
this.Prop3 = {};
this.Prop4 = 0;
}
但是,真正的解决方法是在构造函数之前的行上使用@constructor
JSDoc 表示法:
/** @constructor */
闭包编译器错误和警告参考提供了与危险使用this
相关的警告的详细说明:
- JSC_UNSAFE_THIS
- JSC_USED_GLOBAL_THIS
有关使用全局 this
对象的警告有助于防止意外调用没有 new
关键字的构造函数,这将导致构造函数属性泄漏到全局范围内。但是,为了使编译器知道哪些函数旨在成为构造函数,需要注释/** @constructor */
。
相关文章:
- chrome扩展更改主机/域警告
- 如何永久停止jshint'只读'警告/错误
- JShint-.jshintrc中的ES6有esversion,但仍收到警告(使用atom)
- Webpack UglifyJS仍在发出警告消息
- 我确实有一个表单,如果用户输入了输入,它应该检查否定或空的输入框,并抛出一条警告消息
- React Router一直给我一个警告:你不能更改<路由器路由>
- 为什么Grunt Copy给了我一个'undefined不是函数'警告
- 执行此代码时,我看不到警告框
- 页面中的声学警告
- 在Resharper中禁用javascript类型强制警告
- npm警告包.jsonCrackingJS@0.0.1没有存储库字段
- 为什么JavaScript对话框(警告、确认)会停止页面重绘
- 尝试在两次迭代中警告同一选择器的值,在第一次迭代中得到正确的值,而在第二次迭代中获得不正确的值.为什么?
- 警告密码的jquery值错误
- 我一直收到的控制台警告是什么?推迟长时间运行的计时器任务以提高滚动的流畅性
- 警告:失败的propType:类型为“array”的无效prop应为React的“object”
- 解析云代码不会记录/警告成功或失败
- 警告 - 全局 THIS 对象的危险使用
- Google 闭包编译器中的“全局此对象的危险使用”警告
- 在JavaScript中为Google闭包编译器注释单例对象,或者“危险地使用全局this对象”.警告