创建一个称为自动售货机(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);
}
}
我正在尝试传递清单清单
答案 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) )