JavaScript 中的動態屬性賦值
在某些場景下,您可能會遇到需要為物件中深層巢狀的屬性賦值的情況結構。但是,您可能只有字串形式的屬性名稱。這可能會帶來挑戰,因為直接存取屬性需要遍歷整個物件層次結構。
解
為了解決這個問題,我們可以使用allocate()函數:
function assign(obj, prop, value) { if (typeof prop === "string") prop = prop.split("."); if (prop.length > 1) { var e = prop.shift(); assign(obj[e] = Object.prototype.toString.call(obj[e]) === "[object Object]" ? obj[e] : {}, prop, value); } else obj[prop[0]] = value; }
用法
讓我們考慮一個例子:
var obj = {}; var propName = "foo.bar.foobar"; assign(obj, propName, "Value");
解釋
透過利用使用 allocate() 函數,您可以動態地將值指派給任何深度等級的屬性,即使您只有字串形式的屬性名稱。
以上是如何僅使用字串屬性名稱為深度嵌套的 JavaScript 物件動態賦值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!