如何在javascript中将对象分配给类属性

时间:2019-12-30 02:26:54

标签: javascript class

创建一个称为自动售货机(VM)的类,该类返回自动售货机的实例。自动售货机实例包含一个库存属性,该属性是一个对象,其中包含库存物品的名称和每个物品的库存总量。

  drinkInventory = {
      1: { name: 'Sunny Delight', stock: 5 },
      2: { name: 'Diet Soda', stock: 3 },
      3: { name: 'Bottled Water', stock: 4 },
    };

class VM {
  constructor(obj) {
    this.iventory = Object.assign(this, obj);
  }
}

我正在尝试传递清单清单

1 个答案:

答案 0 :(得分:0)

this.iventory = JSON.parse(JSON.stringify(obj))

更简单

const drinkInventory= { 1: { name: 'Sunny Delight', stock: 5 }
                      , 2: { name: 'Diet Soda',     stock: 3 }
                      , 3: { name: 'Bottled Water', stock: 4 }
                      };

class VM {
  constructor(obj) {
    this.iventory = JSON.parse(JSON.stringify(obj))
  }
  getStock(key) { return this.iventory[key].stock }
}

let bob = new VM(drinkInventory);

drinkInventory['2'].stock = 50;

console.log( 'bob stock 2 =', bob.getStock(2) );

您还可以使用Spread语法=> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax

const drinkInventory= { 1: { name: 'Sunny Delight', stock: 5 }
                      , 2: { name: 'Diet Soda',     stock: 3 }
                      , 3: { name: 'Bottled Water', stock: 4 }
                      };

class VM {
  constructor(obj) {
    this.iventory = { ...obj };
    // then repeat copy for first level of object entanglement
    for (let elm in obj )
      { this.iventory[elm] = { ...obj[elm] } } 
  }
  getStock(key) {
    return this.iventory[key].stock 
  }
}

let bob = new VM(drinkInventory);

drinkInventory['2'].stock = 50;

console.log( 'bob stock 2 =', bob.getStock(2) )