returnステートメントを使用してパブリッククラスメソッドを公開するデザインパターンを使用しています。
問題は次のとおりです。ClosureCompilerのAdvancedモードで多くの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でこれらを圧縮する必要があるため、引用符で囲まれた文字列やエクスポートは使用しません。