Javascript 可疑代码。';getprop';操作员未被使用警告谷歌关闭

Javascript 可疑代码。';getprop';操作员未被使用警告谷歌关闭,javascript,google-closure-compiler,google-closure,google-closure-library,Javascript,Google Closure Compiler,Google Closure,Google Closure Library,我正在使用google闭包,并定义了几个变量。只有在构造函数中我才能定义它们的值。在编译代码时,我发现了错误 javascript/model/errorLogger.js:42: WARNING - Suspicious code. The result of the 'getprop' operator is not being used. ==> default: [WARNING] model.ErrorLogger.prototype.errors; 这是代码 goog.pro

我正在使用google闭包,并定义了几个变量。只有在构造函数中我才能定义它们的值。在编译代码时,我发现了错误

javascript/model/errorLogger.js:42: WARNING - Suspicious code. The result of the 'getprop' operator is not being used.
==> default: [WARNING] model.ErrorLogger.prototype.errors;
这是代码

goog.provide('model.ErrorLogger');

/**
 * @constructor
 */
model.ErrorLogger = function() {
    this.errors  =[];
    this.errorsHash = {};
}

model.ErrorLogger.prototype.errors;
model.ErrorLogger.prototype.errorsHash;
为什么会有这样的警告?我应该提到typedef注释吗?

这些行:

model.ErrorLogger.prototype.errors;
model.ErrorLogger.prototype.errorsHash;
没有效果-您只是引用属性,而没有对其执行任何操作。这就是它警告你的——它认为你的意思是将它们分配给某个对象,或者将它们传递给某个函数,或者任何有影响的对象

(而且,这些属性甚至不会以这种形式存在-这里真的不清楚您要做什么。)

您计划从另一个不支持面向对象编程的“类”访问“errors”和“errorsHash:) 您必须为两个成员定义访问器,或者告诉编译器您的成员是公共的(即使这是默认行为)


添加此属性或为属性声明公共getter/setter将解决您的问题

但是,如果添加一些JSDoc,编译器将理解它们是用来声明类型的:
/**type{Array}*/model.ErrorLogger.prototype.errors/*
* public member  
* @public
*/