我有一些代码,如下所示:
var MyObject = function () {
this.Prop1 = "";
this.Prop2 = [];
this.Prop3 = {};
this.Prop4 = 0;
}
然后,我以后有这样的:
var SomeObject = new MyObject();
当我通过在高级模式下关闭编译运行我的代码,我收到了警告dangerous use of the global this object
每行,其中我有this.Prop =
我在做什么这是“危险的”,我应该如何重写我的代码?
感谢您的建议。
我建议这样写的:
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 */
是必需的。
文章来源: “dangerous use of the global this object” warning in Google Closure Compiler