javascript - 检查传递的参数是否为 Backbone.js View 或命令

标签 javascript backbone.js

检查传递的参数是否为 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/

相关文章:

javascript - 如何用 Nightwatch 履行 promise

javascript - 从 Angular 中的 BehaviorSubject 访问嵌套数据

javascript - 如何检测是window.location.reload还是location.href被调用?

javascript - 主干路由器事件 - 每条路由总是有两个事件?

javascript - 从回调中访问 `this`

javascript - 在 backbone.js 中如何触发 View 卸载事件?

javascript - 如何更改 variable.scss 中变量的值?

javascript - Node js 中的异步函数处理

backbone.js - 主干模型中的自定义属性

javascript - 为什么 Phantom.js 不评估我的 Backbone 应用程序的工作?