22

バックボーン プロジェクトの単体テスト (QUnit を使用) の一環として、バックボーン モデルの配列を返すコレクション操作関数をいくつかテストします。

配列内のオブジェクトが Backbone.Model を拡張するかどうかを (健全性のために) 直接テストする方法はありますか?

JavaScriptには実際の「クラス」構造がないため、typeof明らかにここではうまくいきません。

これは、コレクションの将来の他のテストで役立つか、または特定のバックボーン クラスのインスタンスであることを確認するために役立つことがわかります。

4

2 に答える 2

38

使用方法instanceof

console.log(yourObject instanceof Backbone.Model);

instanceof 演算子は、オブジェクトのプロトタイプ チェーンにコンストラクターのプロトタイプ プロパティがあるかどうかをテストします。

于 2012-06-02T15:18:03.200 に答える
3

オブジェクトの型に対するチェックは、JavaScript などの言語におけるコードの匂いです。

特定のメソッドを呼び出すときにコレクションが特定のモデルを返すことを知る必要がある場合は、コレクションに既知のモデルを入力し、それらのモデルと比較します。

MyModel = Backbone.Model.extend({});

MyCollection = Backbone.Collection.extend({
  model: MyModel,

  getThatOne: function(){
    return this.at[0];
  }
});


m1 = new MyModel();
m2 = new MyModel();

col = new MyCollection([m1, m2]);

retrieved = col.getThatOne();

retrieved === m1 //=> true
于 2012-06-02T20:15:45.517 に答える