2016-12-21 2 views
1

ist. Überprüfen Sie, ob der übergebene Parameter die Backbone.js-Sicht oder den Befehl ist.Überprüfen Sie, ob der übergebene Parameter die Backbone.js-Ansicht oder den Befehl

Ich übergebe eine Backbone-Ansicht in eine andere als Parameter.

Ich muss testen, ob die übergebene Funktion eine Ansicht und keine Funktion eines anderen Typs wie zum Beispiel ein Befehl ist.

Was ich mit so weit kam ist so etwas wie dieses:

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

diese Bedingung erfüllt ist, wenn Sie eine Funktion übergeben, die für beide, Befehle und Ansichten wahr ist.

Also brauche ich so etwas wie dieses:

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

Gibt es eindeutige Attribute Backbone Ansichten, die ich gegen überprüfen könnte?

Vielen Dank!

+1

vielleicht können Sie es lösen, indem Sie den "instanceof" Komparator mit wie: if (x instanceof Backbone.View) { ... } sonst wenn (...). Für weitere Informationen über isntanceof können Sie überprüfen: http://stackoverflow.com/questions/7313559/what-ist-instanceof-operator-used-for – kawashita86

+1

@ kawashita86 während Sie Recht haben, Sie mit einer Frage auf Java verknüpft, und diese Quest ist über JavaScript. –

+1

@EmileBergeron Whoops, mein Schlechter. Von einem schnellen Lesen der Antwort war die Logik dahinter so ähnlich, dass ich nicht überprüft habe, welche Sprache der Code war. Danke, dass du das ausgemacht hast. :) – kawashita86

Antwort

2

Als mentionned by kawashita86 können Sie instanceof verwenden, um zu testen, ob eine Funktion eines bestimmten Typs irgendwo in der Prototypkette ist.

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>

Weitere Informationen:

Verwandte Themen