javascript - 获取多级javascript对象属性的简单方法

标签 javascript object properties null

我总是需要处理多级js对象,其中属性的存在不确定:

try { value1 = obj.a.b.c; } catch(e) { value1 = 1; }
try { value2 = obj.d.e.f; } catch(e) { value2 = 2; }
......

是否有更简单的方法或不需要大量 try catch 的通用函数(例如 ifnull(obj.d.e.f, 2) )?

最佳答案

var value1 = (obj.a && obj.a.b && obj.a.b.c) || 1;

http://jsfiddle.net/DerekL/UfJEQ/

或者使用这个:

function ifNull(obj, key, defVal){
    var keys = key.split("."), value;
    for(var i = 0; i < keys.length; i++){
        if(typeof obj[keys[i]] !== "undefined"){
            value = obj = obj[keys[i]];
        }else{
            return defVal;
        }
    }
    return value;
}

var value1 = ifNull(obj, "a.b.c", 1);

关于javascript - 获取多级javascript对象属性的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18305961/

相关文章:

javascript - 如何绑定(bind) :src for an image in the child component?

javascript - 有没有办法在运行时获取扩展的设置(在 package.json 中定义)?

php - Jquery .clone() 导致 $.post 失败

javascript - 将引用设置为其他内容后保留 Javascript 引用

.net - 是否可以通过覆盖来将访问器添加到 .NET 中的属性?

c# - 为什么公共(public)领域比属性更快?

javascript - AngularJS分页表: limitTo parameters do not update in the view

java - 如何为特殊情况使用更简单的构造函数

php - 为嵌套对象扩展 json_encode

D 中的属性和引用返回值