检查传递的参数是否是Backbone.js视图或命令。
我将Backbone视图作为参数传递给另一个视图。
我需要测试传递的函数是否是View而不是像其他类型的函数,例如命令。
到目前为止我想出的是这样的:
//content is the passed function
if (typeof content === 'function') {
//do foo
}
当您传递一个函数时,这种情况就成立了,对于命令和视图都是如此。
所以我需要这样的东西:
if(view) {
//do foo
} else if(command) {
//do bar
}
Backbone视图是否有任何可以检查的独特属性?
谢谢!
答案 0 :(得分: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>
&#13;
更多信息: