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
,并确保在使用变量之前声明变量。