更新JavaScript对象属性

时间:2016-03-25 09:17:08

标签: javascript object methods



 function person(f, l) {
     this.firstName = f;
     this.lastName = l;
     this.changeName = function (str) {
     this.lastName = str; }
     this.getInitials = function() {
         {return f[0] + l[0]} }}
 
 var foo = new person("Joe","Smith"); 
 foo.changeName("Brown");
 alert(foo.firstName + " " + foo.lastName);
 alert(foo.getInitials())




第一个alert()给出了我期望的内容,即" Joe Brown"。但是,第二个给出了JS'。

这里发生了什么?如果现在是foo.lastName"布朗"它不应该显示JB而不是JS

4 个答案:

答案 0 :(得分:0)

变化:

this.getInitials = function() {
    {return f[0] + l[0]}
}

要:

this.getInitials = function() {
    return this.firstName[0] + this.lastName[0];
}

您将返回传递给Personf / l)的参数的第一个字母,而不是存储(新)名称的实际变量({{1 }} / this.firstName)。

此外,包裹this.lastName的额外{}块没有任何意义。我删除了它。

这是一个工作片段:

return

答案 1 :(得分:0)

function person(f, l) {
    this.firstName = f;
    this.lastName = l;
    this.changeName = function (str) {
        this.lastName = str;
    }
    this.getInitials = function() {
        return this.firstName[0] + this.lastName[0];
    }
}

var foo = new person("Joe","Smith"); 
foo.changeName("Brown");

alert(foo.firstName + " " + foo.lastName);
alert(foo.getInitials())

答案 2 :(得分:0)

这里的问题是你实际上获得了为参数“f”和“l”输入的原始值。当您访问方法this.getInitials时,您希望使用this.firstNamethis.lastName而不是f和l。

因此,您的方法应为{return this.firstName[0] + this.lastName[0]},以便他们正确更新。

答案 3 :(得分:-1)

尝试使用this.lastNamethis.firstName

this.getInitials = function() {
  {
    return this.firstName[0] + this.lastName[0]
  }
}