javascript - 设置对象属性而不创建额外的嵌套级别

标签 javascript

我有一个对象:

var o = { dates: { dateFrom: "01DEC2012", dateTo: "02DEC2012" }, selection: "A" };

和一个函数:

var getSelection = function () {
   return { selection: "A,B" };
};

调用:

o.selection = getSelection();

让我明白:

{ dates: { dateFrom: "01DEC2012", dateTo: "02DEC2012" }, selection: { selection: "A,B"} };

当我需要时:

{ dates: { dateFrom: "01DEC2012", dateTo: "02DEC2012" }, selection: "A,B" };

我知道我可以将 getSelection() 结果提取到变量中,然后手动更新 o,但我的对象要复杂得多,我需要一气呵成。我该怎么做?

最佳答案

您实际上是将 getSelection() 合并到 o 中,因此您可以执行以下操作:

var result = getSelection();

for (var key in result) {
    o[key] = result[key];
}

如果您使用 jQuery,则可以使用 jQuery.extend() :

var result = jQuery.extend(getSelection(), result);

关于javascript - 设置对象属性而不创建额外的嵌套级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12991711/

相关文章:

javascript - 我将SmartContract代币称为ERC20,为什么显示哈希输出?

javascript - 读取具有 "error"属性的元素并发出警报

javascript - 有没有办法为 Jasmine 单元测试(Angular 4)提供基类?

php - 显示 PHP 脚本的完成百分比

javascript - 如何全局定义nconf的默认值?

javascript - 我怎样才能使这个正则表达式不导致 "catastrophic backtracking"?

javascript - 为图像做平滑运动的最佳方法

javascript - 如何使用 jQuery 将 html 附加到 HTML 字符串中找到的选择器?

javascript - 如何附加到从闭包创建的 JavaScript 命名空间?

javascript - 如何使用 API 将 Chrome 书签与扩展中的服务器同步