在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ Object.assign屬性拷貝

Object.assign屬性拷貝

var obj = {
  name: 'obj',
  fn: {
    add: true,
    edit: true
  }
}

var page1 = {
  name: 'page1',
  fn: {
    edit: false
  }
}

var config = Object.assign({}, obj, page1)
// {name: 'page1', fn: {edit: false}}

請(qǐng)問(wèn)下我如何才能只覆蓋edit一個(gè)值呢?
達(dá)到最終這個(gè)結(jié)果
{name: 'page1', fn: {add:true, edit: false}}

回答
編輯回答
陪她鬧

如果這樣的屬性有很多,建議深拷貝

如果只有這一個(gè),建議這么寫:

var obj = {
  name: 'obj',
  fn: {
    add: true,
    edit: true
  }
}

var page1 = {
  name: 'page1',
  fn: {
    edit: false
  }
}

var config = Object.assign({}, obj)
config.fn.edit = page1.fn.edit;
// {name: 'page1', fn: {add: true, edit: false}}
2018年2月27日 01:27
編輯回答
巷尾
let result = {};
Object.keys(obj).forEach(key => {
    let assign = obj[key];
    if (page1.hasOwnProperty(key)) {
        if (typeof page1[key] === "object") {
            if(page1[key] instanceof Array) {
                assign = obj[key].concat(page1[key]);
            } else {
                assign = {...obj[key], ...page1[key]};
            }
        } else {
            assign = page1[key];
        }
    }
    result[key] = assign;
});

其它類型的自己實(shí)現(xiàn)一下吧。
或者你可以使用lodash。

2017年6月22日 12:53
編輯回答
瞄小懶
var obj = {
  name: 'obj',
  fn: {
    add: true,
    edit: true
  }
}
var page1 = {
  name: 'page1',
  fn: {
    edit: false
  }
}
Object.assign(obj.fn,page1.fn);

Objct.assign

2017年7月8日 10:05