所以,朋友们,问题来了:我有一个带有随机生成参数的对象,并且有一个函数可以根据对象的因变量所取的值,为对象的变量之一分配一个特定值。例如,有一个对象变量“age”,范围可以是5到60岁。还有一个变量“adult”,如果年龄等于或大于 18,则应评估为 true,如果年龄小于 18,则应评估为 false。对于此任务,我编写了一个小函数:
const ADULT_YES = 1,
ADULT_NO = 2;
function getAdult(people) {
if (people.age < 18) {
people.adult = ADULT_NO;
} else {
people.adult = ADULT_YES;
}
}
function getRandom(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min; //Максимум и минимум включаются
};
{
gender: newGender,
fraction: getRandom(0, 6),
race: getRandom(0, 4),
age: getRandom(age1, age2),
adult: getAdult(this),
socialStats: socStat,
work: getWorker(this),
workPlace: 0,
}
但是,运行此代码时,变量“adult”始终返回值“undefined”。我怀疑问题出在 this 的使用上,也许它读取了函数所在的错误对象,或者可能是其他问题。帮我找出问题所在以及如何解决?
在这段代码中
尝试为成人属性分配一个返回值
getAdult,但是,此函数不返回任何内容,因此被分配给
undefined。此外,它被传递
this,它没有在任何地方定义,因此具有全局对象的值。要解决这个问题,您需要创建一个构造函数,或者使用属性(getter、setter)
例如: