JS Object属性复制:幕后发生了什么?

时间:2017-02-10 13:22:12

标签: javascript object properties for-in-loop

让我们说我想用旧方式复制两个对象:

var firstObj = {
  key1: "val1",
  key2: "val2"
}

var secondObj = {
  key1: "val1",
  key2: "val2",
  key3: "val3",
  key4: "val4"
}

如果我使用解决方案

for(var k in firstObj) secondObj[k]=firstObj[k];

很明显,我只是指那个对象的属性'内容而不是财产本身。如何复制属性名称?

我问,因为" k"是指" key1,key2,... keyn"而" obj [k]"指的是属性包含的内容。 如果我正在进行for循环以列出属性及其内容,我必须同时参考" k"和obj [k]是这样的:

for(var k in secondObj) {
  console.log(k + " : " + secondObj[k]);
  }

但是在提到两个对象时,我并没有提到' k'再

1 个答案:

答案 0 :(得分:1)

  

如何复制属性名称?

使用带括号表示法的变量kproperty accessor

object.property    // dot notation
object['property']   // bracket notation
for (var k in firstObj) secondObj[k] = firstObj[k];
//                               ^^^

k包含字符串而不是属性而不是对象。

基本上它表示取对象k的属性名secondObj并为其赋值。

分配后,对象secondObj的属性名称为k