2016-04-27 39 views
1

谷歌关闭编译器会抱怨这样的代码:警告 - 危险使用全局这个对象?

function Message() { 
    this.message = ""; 
    this.nickname = ""; 
    this.time = 0; 
    this.my = false; 
}; 

什么危险吗?它应该如何创建“对象”?现在我做

var m = new Message(); 

得到一个“类型”消息的初始化对象。

回答

3

尝试注释的代码来告诉编译器,这是一个构造函数:

/** 
* A message 
* @constructor 
*/ 
function Message() { 
    this.message = ""; 
    this.nickname = ""; 
    this.time = 0; 
    this.my = false; 
}; 

https://developers.google.com/closure/compiler/docs/js-for-compiler#overview

+0

是的,这是一种选择,但我感兴趣的问题的根源。谷歌封闭编译器在那里发现了哪些犯罪? – pavelkolodin

+1

编译器认为你指的是窗口对象,而不是Message的实例,因为它不知道Message是否是构造函数 – Ozrix

+0

编译器的一个基本特性是类型检查,这就是为什么你需要注释。 – Ozrix