3

私は Javascript フレームワークの世界に不慣れで、Backbonejs の動作がとても気に入っています。しかし、モデルとビューのコンストラクターに関して 1 つ質問があります。私は何年も Java のような言語を使用して開発してきましたが、次のようなコンストラクターを定義することに慣れています。

public Car(Manufacturer manufacturer, String model, Color color) {
    this.manufacturer = manufacturer;
    this.model = model;
    this.color = color;
}

しかし、ドキュメンテーションや他のチュートリアルでは、モデルやビューを定義するときに通常は特定のコンストラクターを宣言せず、次のようにオブジェクトを構築するだけであることがわかります。

var car = new Car({manufacturer: ford, model: "Mustang", color: "red"});

次のようなコンストラクターを定義するのは間違っていますか、それとも「醜い」ですか?

window.Car = Backbone.Model.extend({
    initialize: function(manufacturer, model, color) {
        this.manufacturer = manufacturer;
        this.model = model;
        this.color = color;
    }
});

もしそうなら、理由を説明できますか?これがばかげた質問ではないことを本当に願っています。関連する質問は見つかりませんでした。

4

2 に答える 2

5

オブジェクトではなく複数の引数を渡すという考えは問題ありませんが、初期化関数を次のようにする必要があります。

window.Car = Backbone.Model.extend({
    initialize: function(manufacturer, model, color) {
        this.set({
            manufacturer: manufacturer,
            model: model,
            color: color
        });
    }
});

set属性オブジェクトにアクセスするには、を使用する必要があります。を使用thisすることで、属性をモデルに直接アタッチしています。

バックボーンが属性オブジェクトを使用する理由は、属性を変更したときにイベントを自動的にトリガーできるようにするためです。また、作成するのと同じ方法で、フィールドをメソッドにカプセル化する方法でもあります

private Manufacturer manufacturer;

public Manufacturer getManufacturer()

ジャバで。

于 2012-07-11T18:47:21.850 に答える
0

これは、コンテキストオブジェクトをJavaのメソッドに渡すのと似ています(これは、ステートレス環境のメソッドに状態を渡す必要がある場合に行われます)。メソッドがコンストラクターであることが起こります。これには特定の公式パターンはないと思います。これは、JavaScriptの一般的なパラダイムです。

于 2012-07-11T18:22:35.577 に答える