underscorejs - 如何循环对象并从对象中调用函数

时间:2014-06-07 06:53:59

标签: javascript underscore.js

我有一个带有布尔值的对象,一旦值为true,我想测试相同的值是否在我的对象中作为函数,如果有,那么我想调用该函数。我只需使用javascript就可以做到这一点。

但我正在寻找一些使用下划线的好方法..可能吗?

这是我的尝试:

var requiredViews : {
  "breadCrumbView": false,
  "headerView": false,
  "footerView": false
}
var that = this;
_.each(requiredViews , function(val,key){
   if(val && _.contaions(_.functions(that, key))){
  that[key]();
 }
})

除了是否有任何快捷方式从对象中单独选择真值键并调用它?

有人建议我吗?

1 个答案:

答案 0 :(得分:2)

functions方法只接受一个参数。看起来你正在寻找这样的东西:

_.each(requiredViews , function(val,key){
    if(val && _.contains(_.functions(that), key)) {
        that[key]();
    }
})

此外,在每次迭代时调用_.functions似乎都很浪费,您可能希望像这样缓存它:

var funcs = _.functions(that);
_.each(requiredViews , function(val,key){
    if(val && _.contains(funcs, key)) {
        that[key]();
    }
})

或者也许使用isFunction

_.each(requiredViews , function(val,key){
    if(val) {
        var func = that[key];
        if (_.isFunction(func)) {
            func();
        }
    }
})