使用点表示法字符串访问对象子属性
使用链点表示法访问 JavaScript 对象的子属性是一项常见的编程任务。但是,使用这种方法进行动态属性访问时存在限制。
考虑以下对象:
var r = { a: 1, b: { b1: 11, b2: 99 } };
要访问 b2 的值,可以使用标准点表示法:
r.b.b2
但是,如果需要基于字符串的动态属性访问,例如:
var s = "b.b2";
像 r.s 或 r[s] 这样的直接尝试将会失败。一种解决方案是使用自定义函数来迭代字符串段来检索属性:
function getDescendantProp(obj, desc) { var arr = desc.split("."); while (arr.length && (obj = obj[arr.shift()])); return obj; } console.log(getDescendantProp(r, "b.b2")); // 99 ```` This function effectively simulates the behavior of dot notation by breaking down the string and recursively accessing the corresponding properties. However, it is important to note that this method works best for simple object property scenarios. Arrays can also be accessed using this approach by treating elements as dotted properties:
getDescendantProp({ a: [ 1, 2, 3 ] }, 'a.2'); // 3
以上是如何使用字符串访问嵌套 JavaScript 对象属性?的详细内容。更多信息请关注PHP中文网其他相关文章!