簡體   English   中英

為什么使用括號表示法和包含空格的鍵訪問 object 文字會導致未定義?

[英]Why does accessing an object literal with bracket notation and a key containing spaces result in undefined?

正如標題中所說,我正在嘗試使用來自另一個 object 文字的值來訪問 object 文字的值。 當傳遞的值不包含空格時,這很好用,但包含空格的值將返回未定義。 代碼示例:

for (var s in Skills) {
  console.log("Skill: " + s)
  console.log("Skill Stat: " + SkillStats[s])
}

export const Stats = {
  STR: "Strength",
  DEX: "Dexterity",
  CON: "Constitution",
  INT: "Intelligence",
  WIS: "Wisdom",
  CHA: "Charisma"
}

export const Skills = {
  Acrobatics: "Acrobatics",
  AnimalHandling: "Animal Handling",
}

export const SkillStats = {
  [Skills.Acrobatics]: Stats.DEX,
  [Skills.AnimalHandling]: Stats.WIS,
}

Output:

在此處輸入圖像描述

我嘗試搜索標題的許多變體以尋找解決方案,但沒有成功。 我在 javascript 方面仍然相對缺乏經驗,所以如果這段代碼中有任何不正統的代碼,請見諒。 任何建議將不勝感激。

Skills 中s in Skills中的屬性名稱。 這決定了您要查找的屬性名稱: AnimalHandling (其中沒有空格)。

您正在查看的SkillStats object 的屬性定義為: [Skills.AnimalHandling]: Stats.WIS 這意味着屬性名稱是根據Skills.AnimalHandling計算的,即"Animal Handling"

它根本不匹配。

您枚舉Skills的屬性名稱,但訪問並記錄SkillStats上的屬性值。 看來你打算使用

const skill = Skills[s];
console.log("Skill Stat: " + SkillStats[skill]);

或者在一個 go 中:

console.log("Skill Stat: " + SkillStats[Skills[s]]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM