Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当对象是另一个变量的一部分时,在对象内使用对象_Javascript - Fatal编程技术网

Javascript 当对象是另一个变量的一部分时,在对象内使用对象

Javascript 当对象是另一个变量的一部分时,在对象内使用对象,javascript,Javascript,我想输出一个对象属性(“剑”)的名称。我想我应该可以通过使用 player.weapon.name 当所有的东西都嵌套在一个对象中时,我没有问题,但是当尝试从另一个变量(剑)获取属性(名称)时,当单击“装备”按钮时,应用程序会中断。经过测试,我确信这是由于 player.weapon.name 行为不正常 vscode()提供的这个弹出窗口表明player.wearm.name应该可以工作。我也试过用括号表示法,但没有用。引用此属性的正确语法是什么 // DOM Variables var

我想输出一个对象属性(“剑”)的名称。我想我应该可以通过使用

player.weapon.name
当所有的东西都嵌套在一个对象中时,我没有问题,但是当尝试从另一个变量(剑)获取属性(名称)时,当单击“装备”按钮时,应用程序会中断。经过测试,我确信这是由于

player.weapon.name
行为不正常

vscode()提供的这个弹出窗口表明player.wearm.name应该可以工作。我也试过用括号表示法,但没有用。引用此属性的正确语法是什么

// DOM Variables
var equipButton = document.getElementById('equip-button');

// UI Variables
var equipQuery = false;

// Player Variables
var player = {
  name: "Player",
  health: 100,
  armor: 0,
  strength: 1,
  accuracy: 80,
  knowledge: 0,
  weapon: sword,
};

equipButton.style.display = 'none';

showStatus();

// Button Handlers

equipButton.addEventListener('click', function() {
  equipQuery = true;
  showStatus();
});

// Write Screen

function showStatus() {
  if (equipQuery == true) { // Clicked Equip Button
    textArea.innerText = "You are wielding " + player.weapon.name;

    equipQuery = false; // Let's turn off the equip query

    equipButton.style.display = 'none'; // Sets the buttons such that the player can go back

    return;
  }

  textArea.innerText = "Your name is " +    player.name; // Default Text

}

// Item Objects

var sword = {
  name: "sword",
  bigname: "Sword",
  strength: 0,
  accuracy: 0,
  type: null,
};

您在实际为剑赋值之前使用了
,因此它是
未定义的
console.log(player)
来验证这一点),因此您无法访问它的
名称

这是可能的,因为您使用了允许此类错误的
var
,使用
let
const
(对于不变的值),然后它会指出这些错误

  let player = { weapon: sword }; // error: variable used before declaration

  const sword = {};

您在实际为剑赋值之前使用了
,因此它是
未定义的
console.log(player)
来验证这一点),因此您无法访问它的
名称

这是可能的,因为您使用了允许此类错误的
var
,使用
let
const
(对于不变的值),然后它会指出这些错误

  let player = { weapon: sword }; // error: variable used before declaration

  const sword = {};

您应该在使用剑之前定义剑。必须将剑变量及其属性向上移动到玩家变量上方,才能正确声明它。那太尴尬了。请记住在引用变量之前先定义变量。在使用变量之前,应先定义
swarm
。必须将剑变量及其属性向上移动到玩家变量上方,才能正确声明它。那太尴尬了。请记住在引用变量之前定义变量。已解决,谢谢。从现在起,我将使用
let
,并确保在使用变量之前声明变量。已解决,谢谢。从现在起,我将使用
let
,并确保在使用变量之前声明变量。