检查传递的参数是否是Backbone.js视图或命令

时间:2016-12-21 10:27:29

标签: javascript backbone.js

检查传递的参数是否是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视图是否有任何可以检查的独特属性?

谢谢!

1 个答案:

答案 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;
&#13;
&#13;

更多信息: