我正在使用一种设计模式,该模式使用 return 语句来公开公共类方法。
问题是:我在 Closure Compiler 的高级模式下收到很多警告JSC_INEXISTENT_PROPERTY
,这使得检查真正重要的警告变得困难。
我使用的模式示例:
// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// ==/ClosureCompiler==
/**
* @constructor
*/
var MyClass = function() {
var someFunc = function(myString) {
console.log(myString);
}
return {
myPublicFunc: someFunc
};
}
var myClassInstance = new MyClass();
myClassInstance.myPublicFunc('Hello World');
警告:
JSC_INEXISTENT_PROPERTY: Property myPublicFunc never defined on MyClass \
at line 16 character 0
myClassInstance.myPublicFunc('Hello World');
输出(格式化):
(new function() {
return {
a: function(a) {
console.log(a)
}
}
}).a("Hello World");
这很奇怪,因为 Closure 理解了代码在做什么并正确编译了代码,并myPublicFunc
一致地重命名为a
. 那么为什么我会收到这个警告呢?难道我做错了什么?
注意:我不想关闭这些警告,因为它也会隐藏我真正关心的警告。我也不想使用带引号的字符串或导出,因为我确实希望 Closure 压缩这些。