用Object属性调用对象中的匿名函数

时间:2016-07-28 23:04:19

标签: javascript angularjs anonymous-function

在一个角度项目中,我有一个带有多个属性的用户类,每当更改模型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'未定义。我究竟做错了什么?我很感激任何建议。

0 个答案:

没有答案
相关问题