检查传递的参数是否为 Backbone.js View 或命令。
我将主干 View 作为参数传递给另一个主干 View 。
我需要测试传递的函数是否是 View ,而不是其他类型的函数,例如命令。
到目前为止我想出的是这样的:
//content is the passed function
if (typeof content === 'function') {
//do foo
}
当你传递一个函数时,这个条件为真,这对命令和 View 都是真。
所以我需要这样的东西:
if(view) {
//do foo
} else if(command) {
//do bar
}
Backbone View 是否有任何我可以检查的独特属性?
谢谢!
最佳答案
作为mentionned by kawashita86 ,您可以使用 instanceof
来测试函数是否属于原型(prototype)链上某处的特定类型。
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>
更多信息:
关于javascript - 检查传递的参数是否为 Backbone.js View 或命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41260548/