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
?
答案 0 :(得分:0)
变化:
this.getInitials = function() {
{return f[0] + l[0]}
}
要:
this.getInitials = function() {
return this.firstName[0] + this.lastName[0];
}
您将返回传递给Person
(f
/ 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.firstName
和this.lastName
而不是f和l。
因此,您的方法应为{return this.firstName[0] + this.lastName[0]}
,以便他们正确更新。
答案 3 :(得分:-1)
尝试使用this.lastName
和this.firstName
:
this.getInitials = function() {
{
return this.firstName[0] + this.lastName[0]
}
}