在一个角度项目中,我有一个带有多个属性的用户类,每当更改模型user.name时都应该更新这些属性。而不是制作这些常规的匿名函数,我想我会让它们自动执行匿名函数,这样当我在其他地方使用这些属性时,我就不必执行它们。
然而,现在,当我尝试将参数传递给函数时,这些参数是未定义的。
var messages = {
'startingMessage' : 'You can enter your name here.',
'nameOverflowMessage' : 'Oops, looks like that name is too long.',
'invalidNameMessage' : 'I don\'t think that name will work',
'validNameMessage' : 'This name looks good.'
}
//User Object
this.user = {
'name' : 'Harry Jazz',
'nameStatus' : (function (name) {
console.log(name)
//check name is defined
if(name === undefined) {
return 'undefined';
}
//Check length
if(name.length > 50) {
return 'overflow';
}
else {
return 'valid';
}
}) (this),
'message' : (function (nameStatus) {
console.log(nameStatus);
if (nameStatus === 'valid') {
return messages.validNameMessage;
}
if (nameStatus === 'overflow') {
return messages.nameOverflowMessage;
}
if (nameStatus === 'undefined') {
return messages.invalidNameMessage;
}
return 'Huh? We don\'t have a message for this'
}) (this.nameStatus)
}
具体来说,console.log报告' name'和' nameStatus'未定义。我究竟做错了什么?我很感激任何建议。