关于给定TypeError的对象函数的初学者javascript
我希望成绩册对象中的addScore附加传递到分数数组中的分数。 然而,它给了我一个错误 TypeError:无法读取未定义的属性“testScore”关于给定TypeError的对象函数的初学者javascript,javascript,Javascript,我希望成绩册对象中的addScore附加传递到分数数组中的分数。 然而,它给了我一个错误 TypeError:无法读取未定义的属性“testScore” var students = ["Joseph", "Susan", "William", "Elizabeth"]; var scores = [ [80, 70, 70, 100], [85, 80, 90, 90], [75, 70, 80, 75],
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:{testScore:scores[0]},
susan:{testScore:scores[1]},
william:{testScore:scores[2]},
elizabeth:{testScore:scores[3]},
addGrade:function(stu_name,grade) {
gradebook.stu_name.testScore.push(grade);
}
};
//test call
gradebook.addGrade("susan",100);
console.log(gradebook.susan.testScore); //should display [85 80 90 90 100]
动态属性名不能使用“点”符号。但您可以使用括号表示法:
gradebook["joseph"]
// is equivalent to
gradebook.joseph
…但括号中的表达式可以是一个变量,其计算结果可以是一个带有属性名称的字符串:
var p = "joseph";
gradebook[p]
因此,对于您的addGrade()
函数,请尝试以下操作:
addGrade:function(stu_name,grade) {
gradebook[stu_name].testScore.push(grade);
}
使用以下命令:
var gradebook = {
joseph:{testScore:scores[0]},
susan:{testScore:scores[1]},
william:{testScore:scores[2]},
elizabeth:{testScore:scores[3]},
addGrade:function(stu_name,grade) {
gradebook[stu_name].testScore.push(grade);
}
};
数组索引使用方括号,请尝试:
gradebook[stu_name].testScore.push(grade);
非常感谢这帮了大忙