将新属性分配给对象的快速动态方式

时间:2017-07-14 09:02:34

标签: javascript object

我有一个空对象。

let obj = {};

现在我有一些if条件,我希望通过这些条件将新属性分配到我的obj对象

If(name = 'Alex) {
obj = {name: 'Alex'}
} else {
obj = {name: 'Bill'}
}

但它似乎不起作用。我也使用了Object.assign({}, name: 'Bill'),但它也没有用。你知道为什么会发生这种情况以及如何达到预期的效果吗?

4 个答案:

答案 0 :(得分:4)

试试这个

let obj = {};
obj.name = name || 'Bill';

您的if条件有name = 'Alex'之类的作业,而不是像name === 'Alex'那样的比较。修复将起作用。

答案 1 :(得分:1)

问题是你替换对象,而不是分配给它的属性。这是你如何做到的:

obj.prop = value;

例如,在您的情况下:

obj.name = 'Alex';

答案 2 :(得分:1)

你有两个问题。 name= 'Alex'不是比较事物的正确语法。 =分配值而不是检查,应为name == 'Alex'

其次,分配对象属性的正确语法是

obj['name'] =  'Alex';

甚至更好obj.name = 'Alex';

所以

if(name == 'Alex') {
   obj.name = 'Alex';
} else {
   obj.name = 'Bill';
}

答案 3 :(得分:1)

问题:

  1. 当您撰写If而不是if

  2. 时,您使用的是大写字母I而不是小写字母i
  3. 您将'Alex分配给名为name的变量,该变量不存在。您需要将其分配给obj.name

  4. 您没有关闭'Alex,您需要关闭'Alex'

  5. 您重新创建了已创建的对象,因此您不会为对象分配新属性,而是使用某些属性创建新对象。

  6. 可能的解决方案:

    1. 最贴近您的代码:

      if(!(obj.name = 'Alex)) { obj.name = 'Bill'; //We assign 'Alex' as name and if it is falsey, then override it with 'Bill' }

    2. 最短:

      obj.name = 'Alex' || 'Bill';

    3. 如果'Alex'为真,则会obj.name分配给'Alex',否则会'Bill'

      1. 非常明确:

        if ('Alex') { obj.name = 'Alex'; } else { obj.name = 'Bill'; }

      2. 您可以选择最接近您口味的那个,但请注意'Alex'始终是真实的。