“危险使用全局这个对象的”在谷歌关闭编译器警告(“dangerous use of the glob

2019-06-25 23:04发布

我有一些代码,如下所示:

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 =

我在做什么这是“危险的”,我应该如何重写我的代码?

感谢您的建议。

Answer 1:

建议这样写的:

function MyObject() {
  this.Prop1 = "";
  this.Prop2 = [];
  this.Prop3 = {};
  this.Prop4 = 0;
}

然而,真正的解决办法是使用@constructor JSDoc符号在构造前行:

/** @constructor */


Answer 2:

在关闭编译错误和警告参考提供有关使用危险的警告,详细说明this

  • JSC_UNSAFE_THIS
  • JSC_USED_GLOBAL_THIS

有关使用全球警告this对象有助于防止意外调用没有一个构造函数new关键字,这将导致在构造性质泄漏到了全球范围。 然而,编译器知道哪些功能意在构造函数中,注释/** @constructor */是必需的。



文章来源: “dangerous use of the global this object” warning in Google Closure Compiler