JavaScript 不使用 x.y,其中 y 是变量的名称

标签 javascript object parameters

这里是 JS 新手,在传递参数时遇到问题。我正在一个对象内部编写一个函数,但不明白为什么 JS 不会在函数中传递我的参数。请参阅下面的示例

var students = ["Joseph", "Susan", "William", "Elizabeth"]

var scores = [ [80, 70, 70, 100],
           [85, 80, 90, 90],
           [75, 70, 80, 75],
           [100, 90, 95, 85] ]

var gradebook = {
"Joseph": {
    testScores: scores[0]
},
"Susan": {
    testScores: scores[1]
},
"William": {
    testScores: scores[2]
},
"Elizabeth": {
    testScores: scores[3]
},


addScore: function(student, score){
    console.log(student) //=> output as expected
    console.log(score) //=> output as expected
    console.log(gradebook.Joseph.testScores) //=> this works as expected and shows Joseph's scores
    console.log(gradebook.student.testScores) //=> gives TypeError: Cannot read property 'testScores' of undefined
}
};

gradebook.addScore("Joseph", 30);

我将控制台日志语句进行调试并找出发生了什么。我不知道为什么当我在学生姓名中进行硬编码时这会起作用,但当我通过在成绩簿对象外部运行函数时将学生姓名作为参数传递时则不起作用。任何帮助将不胜感激!

最佳答案

使用[]代替点。 成绩簿[student].testScores 应该给你想要的结果。

关于JavaScript 不使用 x.y,其中 y 是变量的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25707627/

相关文章:

c++ - 使用变量声明对象的名称

javascript - 无法访问不可变对象(immutable对象)中的嵌套对象

javascript - 将 for in 替换为带有对象的常规 for 循环

layout - 更改 latex 文档中间的纸张尺寸?

java - 使用正则表达式检查URL是否包含任何参数

javascript - 尝试全屏时 Cocos2d-js 卡在启动屏幕上

javascript - 在 Ruby 中重写 JavaScript break-to-label

javascript - 提交论坛时未显示子表单中的 Angular Material 2 垫错误

javascript - 如何使用 javascript 的 fetch 方法捕获 401 错误

php - mysqli_stmt_execute() 期望参数 1 为 mysqli_stmt,