设置对象属性而不创建其他嵌套级别

时间:2012-10-20 19:06:20

标签: 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,但我的对象要复杂得多,我需要一次性设置整个事物。我该怎么做?

2 个答案:

答案 0 :(得分:1)

你基本上是将getSelection()合并到o,所以你可以这样做:

var result = getSelection();

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

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

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

答案 1 :(得分:1)

更改你的getSelection方法:

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

编辑: 怎么样:

o.selection = getSelection().selection;