javascript - 在javascript中通过引用返回对象的成员

标签 javascript

我有一个可变的 json 对象(可能有无限的子结构):

var myObject={
    s1:{
        s2:'2',
        s3:'3'
    },
    s4:'4',
    s5:{
        s6:undefined
    },
    s7:'7'
};

我想找到第一个未定义的成员并返回它的引用, 能够随时修改它(通过事件触发的功能)

function findFirstUndefined(obj){
    for (var key in obj){
        if (typeof(obj[key]) === 'object'){
            var recursion=findFirstUndefined(obj[key])
            if (recursion!==false){
                return recursion;
            }       
        }
        else if (obj[key]===undefined){
            return obj[key];
        }   
    }
    return false; 
}

但它不返回成员的引用,而是它的值:

var subObj=findFirstUndefined(myObject);
subObj="my updated cool var!!";

不修改对象。

我发现像 JsonPath 这样的库可以解决问题, 但对于这样一个简单的任务,我觉得有点重。

难道不存在一种优雅的方式来做到这一点吗?谢谢!

最佳答案

JS 不会那样做。您可以改为返回一个将分配给缺失条目的函数吗?

return function(v) { obj[key] = v; };

关于javascript - 在javascript中通过引用返回对象的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13503653/

相关文章:

javascript - 如何在 JavaScript 中使用通知 API 在桌面通知中添加动画 GIF

Javascript oop 基础知识

javascript - 在 JavaScript 中,为什么 []==false 为 true?

javascript - 在javascript中将guid字节转换为字符串

javascript - 过滤函数没有返回正确的值

javascript - CSS - 如果用户调整浏览器大小并水平滚动,如何防止内容 div 在固定位置左侧菜单上重叠?

javascript - 如何在 jQuery Mobile 中检测设备的互联网连接

javascript - EC2 上的 WebRTC Kurento Docker 镜像

javascript - 幂函数。为什么在循环开始时设置 result = 1?

javascript - 圆括号javascript