0

質問のタイトルをお許しください。これを表現するより良い方法が見つかりません。

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演算子を引き続き使用できますか?

4

1 に答える 1

1

個人的には、クラスを変数として定義し、次のnewようにキーワードを使用してそのインスタンスを作成します。

var Apple = function(color) {
    this.type = "macintosh";
    this.color = color;
}

var redApple = new Apple("red");
于 2013-09-12T06:56:42.703 に答える