2016-12-21 6 views
1

Проверьте, прошел ли передаваемый параметр Backbone.js или команда.Проверьте, прошел ли передаваемый параметр Backbone.js или команда

Я передаю представление Backbone в другое как параметр.

Мне нужно проверить, является ли переданная функция видом, а не функцией другого типа, например, команды.

То, что я придумал до сих пор что-то вроде этого:

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

Это условие истинно, когда вы передаете функцию, что справедливо для обоих, команд и представлений.

Так что мне нужно что-то вроде этого:

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

Существуют ли какие-либо уникальные атрибуты для взглядов Backbone, которые я мог бы проверить против?

Спасибо!

+1

может быть, вы можете решить эту проблему с помощью "InstanceOf" компаратор как: если (х InstanceOf Backbone.View) { ... } else if (...). для получения дополнительной информации о istanceof вы можете проверить: http://stackoverflow.com/questions/7313559/what-is-the-instanceof-operator-used-for – kawashita86

+1

@ kawashita86, пока вы правы, вы связались с вопросом о Java, и это questio о 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>

Дополнительная информация: