質問のタイトルをお許しください。これを表現するより良い方法が見つかりません。
Addy Osmani による JavaScript デザイン パターンを読んでいるときに、この記事に出くわしました。JavaScript でクラスを表す 2 つの一般的な方法 (関数とオブジェクト リテラルを使用する方法) とは別に、著者はインライン呼び出しのように見えるもので 2 つを組み合わせる例を示します。これまでのところ、コンストラクターにパラメーターを渡すことができないことを除けば、これで問題ありません。
var apple = new function() {
this.type = "macintosh";
this.color = "red";
this.getInfo = function () {
return this.color + ' ' + this.type + ' apple';
};
}
// can't do new function("red") obviously
問題を回避する方法を考えた
var apple = (function(color) {
this.type = "macintosh";
this.color = color;
this.getInfo = function () {
return this.color + ' ' + this.type + ' apple';
};
return this;
})("red");
しかし、それは少し複雑に思えます。John Resig によって議論されたこの問題に関連する "new" の使用を好みます。オブジェクトへの参照を返したので、まだ機能しますが、見栄えが非常に悪くなります。この場合、コンストラクターのパラメーターでnew演算子を引き続き使用できますか?