当前位置: 首页 > 面试题库 >

如何设置对象属性(..的对象属性)在JavaScript中给定其字符串名称?

廖君昊
2023-03-14
问题内容

假设我们只有

var obj = {};
var propName = "foo.bar.foobar";

我们如何将属性obj.foo.bar.foobar设置为某个值(例如“ hello world”)?所以我想实现这一点,尽管我们只有字符串中的属性名称:

obj.foo.bar.foobar = "hello world";

问题答案:
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 = {},
    propName = "foo.bar.foobar";

assign(obj, propName, "Value");


 类似资料:
  • 问题内容: 如何给定的属性的值? 问题答案: 有称为和的内置函数 在这种情况下

  • 所有对象属性都有默认值。然而,改变一些属性设置以定制图形可能有用。有两个途径可以设定对象属性: 创建对象时指定属性值。 在现有的对象中设置属性值 从作图命令设定属性 类似作图函数,在诸如plot, mesh, 和surf的创建对象用的函数也可以指定对象属性值为变元。 例如,可以用创建线或表面的作图命令来指定属性名称和属性值为二元变元。命令 plot(x,y,'LineWidth',1.5) 以x

  • 问题内容: 如果我的对象包含以%符号开头的属性,那么如何获取其值。 如果我用 我得到一个错误 我知道我不应该在变量名中使用%,但这不是我的工作,我坚持使用它。 问题答案:

  • 问题内容: 为什么JavaScript不允许模板字符串作为对象属性键?例如,当我输入: 到NodeJS REPL中,它会引发带有长堆栈跟踪的“意外模板字符串”。属性值很好,但是,这并不出乎意料。浏览器中也会发生类似的错误,例如Firebug抛出一个带有“无效属性ID”的错误。 “计算的属性名称”中允许使用模板字符串。例如,这在所有支持以下语法的浏览器中都可以完美编译: 并创建对象。 为什么不允许模

  • 本文向大家介绍C#通过属性名字符串获取、设置对象属性值操作示例,包括了C#通过属性名字符串获取、设置对象属性值操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#通过属性名字符串获取、设置对象属性值操作.分享给大家供大家参考,具体如下: #通过反射获取对象属性值并设置属性值 0、定义一个类 1、通过属性名(字符串)获取对象属性值 2、通过属性名(字符串)设置对象属性值 #获取对象的

  • 问题内容: 有没有一种方法可以设置javascript对象的默认属性,例如: IE可以忽略,Chrome Frame减轻了我的头痛。 问题答案: 自从几年前我问这个问题以来,事情进展顺利。 代理是ES6的一部分。以下示例可在Chrome,Firefox,Safari和Edge中运行: