为什么我不能直接使用学生班的getName()而不是this.getName()?
据我了解,getName()是一个公共函数,可以从其子类访问它。如果我在这种情况下不使用此功能,有人可以添加更多有关它产生什么确切差异的信息。这可能是JAVAScript中的一个基本问题,作为一个初学者,很难理解场景。预先感谢您的帮助。
class person{
constructor(name){
this.name=name;
}
getName(){
return "Name of the person is "+ this.name;
}
}
class student extends person{
constructor(name,age){
super(name);
this.age=age;
}
getAge(){
return "Age is "+ this.age;
}
getDetails(){
return this.getName()+ ", "+ this.getAge();
}
}
var p1=new student("ram",21);
console.log(p1.getDetails());
答案 0 :(得分:0)
了解原型链。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain
在您的情况下,您可以调用super.getName()或this.getName()。
当您访问对象上的某些内容时,它将搜索直接属性(ownProperties),如果名称不存在,则将在原型中查找它。如果仍然找不到,它将在链中的下一个原型下进一步查找,直到到达最后一个原型,可能是Object.prototype。
您的链条将是p1。 proto ==== student.prototype >>> p1。 proto 。 proto ===人.prototype >>> p1。 proto 。 proto 。 proto === Object.prototype
在链上某处调用函数时,this
引用将是实例本身。