2016-12-21 5 views
1

渡されたパラメータがBackbone.jsビューまたはコマンドであるかどうかを確認します。渡されたパラメータがBackbone.jsビューまたはコマンドであるかどうかを確認します。

私は、バックボーンビューを別のものにパラメータとして渡しています。

渡された関数がViewであり、コマンドなどの別の型の関数ではないかどうかをテストする必要があります。私がこれまでに思い付いた何

は次のようなものです:

//content is the passed function 
if (typeof content === 'function') { 
     //do foo 
} 

あなたは、コマンドとビューの両方に当てはまる機能を、渡すときに、この条件が真です。

だから私はこのようなものが必要です。

if(view) { 
    //do foo 
} else if(command) { 
    //do bar 
} 

を、私は反対チェックできるバックボーンビューに任意のユニークな属性がありますか?

ありがとうございました!

+1

多分あなたはとして "instanceofの" コンパレータを使って、それを解決することができますバックボーン。ビュー){ ... } else if(...)。 istanceofの詳細については、次のURLを確認してください:http://stackoverflow.com/questions/7313559/what-is-the-instanceof-operator-used-for – kawashita86

+1

@ kawashita86あなたが正しい間、あなたはJavaに関する質問にリンクしていますが、このクエストはJavaScriptに関するものです。 –

+1

@EmileBergeronはうんざりしています。答えをすばやく読んで、その背後にあるロジックは非常に似ていて、コードがどの言語であるかを二重にチェックしませんでした。その点をご指摘いただきありがとうございます。 :) – kawashita86

答えて

2

mentionned by kawashita86として、instanceofを使用して、関数がプロトタイプチェーンのどこかの特定のタイプであるかどうかをテストできます。

var MyViewType = Backbone.View.extend({}), 
 
    myView = new MyViewType(); 
 

 

 
console.log("myView instanceof Backbone.View:", myView instanceof Backbone.View); 
 

 
var MyOtherViewType = MyViewType.extend({}), 
 
    myOtherView = new MyOtherViewType(); 
 

 
console.log("myOtherView instanceof Backbone.View:", myOtherView instanceof Backbone.View); 
 
console.log("myOtherView instanceof MyViewType:", myOtherView instanceof MyViewType); 
 
console.log("myOtherView instanceof MyOtherViewType:", myOtherView instanceof MyOtherViewType);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js"></script>

詳細情報:(X instanceofの場合:

関連する問題