我正在尝试使用字符串动态访问对象的属性。例如:“ .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] 删除。
我来说两句