假设我们有一个对象Person
,如下所示:
function Person(name){
this.name = name;
this.greeting = function(){
alert("Hi I'm " + this.name);
}
}
和它的孩子
function Teacher(name, subject){
Person.call(this, name);
this.subject = subject;
Teacher.prototype = Object.create(Person.prototype);
}
我试图重写greeting
方法,如下所示:
Teacher.prototype.greeting = function(){
alert("Hello my name is " + this.name + " and I teach " + this.subject);
}
但teacher1.greeting()
调用Person
的方法而不是的方法Teacher
,如您在此处看到的:
更新后的答案:现在,我已经在家中并且在笔记本电脑上,我看到了该错误。您将教师原型放置在错误的位置。
因此,您需要这样做:
// Incorrect
function Teacher(first, last, age, gender, interest, subject) {
Person.call(this, first, last, age, gender, interest);
this.subject = subject;
Teacher.prototype = Object.create(Person.prototype);
}
// Correct
function Teacher(first, last, age, gender, interest, subject) {
Person.call(this, first, last, age, gender, interest);
this.subject = subject;
}
Teacher.prototype = Object.create(Person.prototype);
因此,每次实例化的新实例时Teacher
,都将使用覆盖它的原型Person
。因此,无论您将教师的原型设置为什么,它都会被覆盖。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句