我有以下“类”定义:
<div id="app">
{{ mycomputedprop }}
</div>
当构造函数被执行时,调用方法getName并且在方法内部this.FullName具有正确的值,但是当它再次跳转到构造函数(this.Age)时,this.FullName变为未定义。 / p>
你能解释一下为什么没有保持正确的价值吗?
非常感谢
何。
答案 0 :(得分:1)
这里有两个问题:
- 首先,应通过getName
调用this
方法,即this.getName
;否则,它将在全局范围内搜索getName
函数,而不是类中的函数。
- 第二,你没有从getName
方法返回任何值!不要分配FullName
,而是尝试返回结果:
getName(){
return this.Name+" "+this.Surname;
}
这将返回连接的结果,并通过
相应地设置FullName
属性
this.FullName=this.getName();
线。
答案 1 :(得分:1)
getName()
设置 this.FullName
的值,但它不会返回任何内容。在Javascript中,当您将变量设置为没有返回的函数的结果时,该变量将是未定义的。因此,代码中发生的事情是getName()
设置this.FullName
的值,但是您的构造函数将this.FullName
设置为等于getName()
返回的值,这是未定义的。
您可以通过两种方式解决此问题。一个是让getName()
实际获取并返回一个值,顾名思义:
class MyClass{
constructor(name, surname, age){
this.Name=name;
this.Surname=surname;
this.FullName=this.getName();
this.Age=age;
}
getName(){
return this.Name+" "+this.Surname;
}
}
let myClass=new MyClass("Jose","Suarez",22);
另一种选择是简单地调用this.getName()
而不将其结果设置为变量,如下所示:
class MyClass{
constructor(name, surname, age){
this.Name=name;
this.Surname=surname;
this.getName();
this.Age=age;
}
getName(){
this.FullName=this.Name+" "+this.Surname;
}
}
let myClass=new MyClass("Jose","Suarez",22);
编辑:
正如Pampattitude指出的那样,getName()
和this.getName()
之间存在差异。从对象内部引用成员函数时,必须使用this
,就像对象中的变量一样。
答案 2 :(得分:0)
因为getName
没有return语句,所以它返回undefined
。
getName(){
return this.Name + " " + this.Surname;
}
并正确使用getName
this.Fullname = this.getName()
答案 3 :(得分:0)
你需要从getName()返回全名,如下所示:
class MyClass{
constructor(name, surname, age){
this.Name=name;
this.Surname=surname;
this.FullName=this.getName();
this.Age=age;
}
getName(){
return this.FullName=this.Name+" "+this.Surname;
}
};
let myClass=new MyClass("Jose","Suarez",22);