动态访问对象属性(JS)

最大Xmastermax

我正在尝试使用字符串动态访问对象的属性。例如:“ .id.public”-> anyObject [“ id”] [“ public”]

问题-我不知道有多少个参数(例如“ .id”或“ .id.public”或“ .id.public.whatever”)。

我做了一些解决方法:

var currentSplit = anyObject;
var splitted = "id.public".split("\.");
splitted.forEach(function(s) { currentSplit = currentSplit[s]; });

当我现在尝试覆盖对象属性时,我将覆盖引用而不是对象属性。

currentSplit = "test";

我已经尝试过类似的东西,anyObject["id.public"] = "test";但是没有用。

格伦迪

设置价值的另一种方法

function setVal(obj, path, val){
    var paths = path.split('.'),
        curProp = obj;

    for(var i=0;i<paths.length-1;i++){
        curProp = curProp[paths[i]];
    }
    curProp[paths[i]] = val;

}

并像这样使用

setVal(anyObj, "id.public", 'newValue');

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章