最近、独自のJavascriptライブラリを作成し、最初は次のパターンを使用しました。
var myLibrary = (function () {
var someProp = "...";
function someFunc() {
...
}
function someFunc2() {
...
}
return {
func: someFunc,
fun2: someFunc2,
prop: someProp;
}
}());
これに伴う問題は、IDEが関数リテラルが返すプロパティを認識していないため、コード補完を実際に使用できないことです(ちなみに、私はIntelliJ IDEA 9を使用しています)。
私はjQueryコードを見て、これを実行しようとしました:
(function(window, undefined) {
var myLibrary = (function () {
var someProp = "...";
function someFunc() {
...
}
function someFunc2() {
...
}
return {
func: someFunc,
fun2: someFunc2,
prop: someProp;
}
}());
window.myLibrary = myLibrary;
}(window));
私はこれを試しましたが、今は別の問題があります。IDEは実際にはmyLibrary
どちらにも対応していません。
私が今問題を解決している方法は次のとおりです。
var myLibrary = {
func: function() { },
func2: function() { },
prop: ""
};
myLibrary = (function () {
var someProp = "...";
function someFunc() {
...
}
function someFunc2() {
...
}
return {
func: someFunc,
fun2: someFunc2,
prop: someProp;
}
}());
しかし、それはちょっと不格好なようで、jQueryがそれをどのように行っているかを正確に理解することはできません。私が持っているもう1つの質問は、任意の数のパラメーターを持つ関数をどのように処理するかです。
たとえば、jQuery.bind
2つまたは3つのパラメータを取ることができ、IDEは文句を言わないようです。私は自分のライブラリで同じことをしようとしました。関数は0個の引数または1個の引数を取ることができます。ただし、IDEは、正しい数のパラメーターが送信されていないことを通知し、警告します。これを処理するにはどうすればよいですか?
編集
jQueryにも同じ問題があるので、これがIdea9の問題であるかどうか疑問に思い始めています。しかし、他のプロジェクトではこの問題は発生していないようです。