第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript 中的嵌套對象范圍和動態(tài)引用

JavaScript 中的嵌套對象范圍和動態(tài)引用

猛跑小豬 2022-08-27 09:49:52
我最近一直在使用vanilla javascript來幫助自己學(xué)習(xí)這門語言,我有點(diǎn)難以確切地理解對象“內(nèi)部變量”是如何定義的,以及其他函數(shù)可以看到什么。舉個例子,假設(shè)我們有一個 gameData 變量:let gameData = {    resourcesArray: [wood, stone]}用“木頭”和“石頭”來定義:let wood = {    name: 'Wood',    amount: '0,}let stone = {    name: 'Stone',    amount: 0,}作為對這些變量范圍的測試,假設(shè)在這種情況下,有一個“農(nóng)場”建筑被定義為這樣。let farm = {    name: "Farm"    amount: 0,    cost: {        'Wood': 10,        'Stone': 5,    },}那么,我如何能夠按照 buyBuilding(building) 的思路創(chuàng)建一個函數(shù),將其傳遞給服務(wù)器場對象,并使其將“農(nóng)場”成本的名稱與存儲在 resourcesArray 中的資源正確匹配并扣除成本?理想情況下,這個函數(shù)將能夠處理將來添加許多不同資源和成本的“建筑物”,這就是為什么我正在尋找一種智能方法來做到這一點(diǎn),而不僅僅是為每個將要添加的“建筑物”硬編碼購買功能。提前致謝!
查看完整描述

1 回答

?
動漫人物

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個贊

對于每項(xiàng)費(fèi)用,您必須從全局 gameData 上下文中扣除該金額...像這樣:


const wood = {

  name: 'Wood',

  amount: 500, // Start out with enough to build stuff

}


const stone = {

  name: 'Stone',

  amount: 300, // Start out with enough to build stuff

}


const gameData = {

  resourcesArray: [wood, stone],

}


const farm = {

  name: "Farm",

  amount: 0,

  cost: {

    'Wood': 10,

    'Stone': 5,

  },

}


function buyBuilding(thing = farm) {

  console.log(`Time to build a ${thing.name}!`);


  Object.keys(thing.cost).forEach(resource => {

    const amount = thing.cost[resource];

    console.log(`* This requires ${amount} ${resource}...`);

    const gameResource = gameData.resourcesArray.find(r => r.name === resource);

    console.log(`  | You have ${gameResource.amount} ${resource} available.`);

    // @TODO Check if you have enough before deducting

    gameResource.amount -= amount;

    console.log(`  | Only ${gameResource.amount} ${resource} left now.`);

  });


  console.log(`New game state:`, gameData.resourcesArray);

}


// Do the actual building!

buyBuilding(farm);


查看完整回答
反對 回復(fù) 2022-08-27
  • 1 回答
  • 0 關(guān)注
  • 91 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號