什么是深度测试对象hasOwnProperty(或类似)的简洁方法?

时间:2013-07-01 13:21:32

标签: javascript underscore.js

我需要对某个对象做点什么。不幸的是,我正在使用(Titanium)执行此操作的系统期望值为非null,否则会出现段错误。但是,无法保证输入提供合理的对象。这是一个例子:

var data = {
  foo: {
    bar: "foobar"
  }
};
function do_it(data) {
  do_something_with_non_null_value(data.foo.bar);
}

data完全有可能是以下任何一种情况:

var data = null;
var data = {
  foo: null
};
var data = {
  foo: {
    bar: null
  }
};

如何在深度但简洁的庄园中测试非空值以防止do_something_with_non_null_value()崩溃?

也欢迎Underscore.js的答案。

1 个答案:

答案 0 :(得分:1)

如何使用下划线的defaults方法?

function do_it(data) {

  var defaults = {
    foo: {
      bar: null
    }
  };

  data = _.defaults(data || {}, defaults);

  do_something_with_non_null_value(data.foo.bar);
}

如果数据是以下任何一项:

var data = null;
var data = {
  foo: null
};

将对象更改为:

var data = {
  foo: {
    bar: null
  }
};