我想输出一个对象属性的名称(“ sword”)。我想我应该可以通过使用
player.weapon.name
当所有内容都嵌套在一个对象中时,这样做没有问题,但是当尝试从另一个变量(剑)中获取属性(名称)时,单击“设备”按钮时应用程序将中断。经过测试,我确定这是由于
player.weapon.name
行为不正常。
vscode(https://i.imgur.com/Gw4cEnv.png)提供的弹出窗口表明player.weapon.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,
};
您sword
在实际为其分配值之前使用,因此它是undefined
(console.log(player)
用于验证),因此您无法访问name
。
那是可能的,因为您使用var
允许出现此类错误,而使用let
或const
(对于不变的值),那么它将指出这些错误。
let player = { weapon: sword }; // error: variable used before declaration
const sword = {};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句