如何在不覆盖Javascript的情况下将一个对象的属性添加到另一个对象中

Mak*_*ahy 1 javascript properties add object

我正在尝试将一个对象的属性添加到另一个对象中,而无需覆盖原始属性。

//Start
obj1 = {a: 1, b: 2, c: 3}
obj2 = {b: 4, c: 3, d: 4}

//Goal
obj1 = {a: 1, b: 2, c: 3, d: 4}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了以下,但我看不出它:

function mergeProp(obj1, obj2) { //obj1 is destination, obj2 is source
  for (var a in obj2) {
    if (obj2.hasOwnProperty(a) && !obj1.hasOwnProperty(a)) {
      obj1[a] = obj2[a];
    }
  }
  return obj1 //returns {a: 1, b: 4, c: 3, d: 4} should have {...b: 2...}
}
Run Code Online (Sandbox Code Playgroud)

这将返回被覆盖的属性。我尝试了这种变体,但似乎总是被覆盖,或者缺少obj1 的属性

我也试过这个代码:

function extend(obj1, obj2) {
  let obj = {};
  for (let a in obj2) {
    obj[a] = obj2[a];
  };
  for (let b in obj1){
    obj[b] = obj1[b];
  };
  return obj; //Returns {b: 4, c: 3, d: 4}
}
Run Code Online (Sandbox Code Playgroud)

该对象甚至没有 obj1 的任何属性。

我知道“...对象”,但我正在练习的课程不希望我使用它。然而,我设法让它与它一起工作。

提前致谢!