为了账号安全,请及时绑定邮箱和手机立即绑定

照着老师的打的但是报错哎

function Person(name, age) {
    this.name = name;
    this.age = age;
}
Person.prototype.hi = function () {
    console.log('Hi,my name is ' + this.name + ",I'm " + this.age + 'years old now');
}

Person.prototype.LEGS_NUM = 2;
Person.prototype.ARMS_NUM = 2;
Person.prototype.walk = function () {
    console.log(this.name + "is walking...");
}

function Student(name, age, className) {
    Person.call(this, name, age);
    this.className = className;
}

Student.prototype.hi = function () {
    console.log("Hi,my name is " + this.name + "I'm" + this.age + "years old now,and from" + this.className + ".");
}
Student.prototype.learn = function (subject) {
    console.log(this.name + " is learning" + subject + 'at' + this.className + '.');
}
Student.prototype=Object.create(Person.prototype);
Student.prototype.constructor=Student;

var bosn = new Student('Bosn', 28,
                'Class 3,Grade 2'
        )
        ;
bosn.hi();
bosn.LEGS_NUM;
bosn.walk();
bosn.learn('math');


正在回答

5 回答

很經典的錯誤咯,你先給Student.prototype對象增加了hi/learn方法,又通過Object.create(Person.prototype)把新的對象賦值給Student.prototype,原來你添加的hi/learn當然就沒有咯!!!



正確的辦法:先賦值Object.create(Person.prototype)之後,再對Student.prototype添加hi/learn等方法才行哦

2 回复 有任何疑惑可以回复我~
#1

致良知 提问者

赞!好了,谢谢老师
2015-06-05 回复 有任何疑惑可以回复我~

嗯嗯,要先继承了才能重载(覆盖)

0 回复 有任何疑惑可以回复我~

console.log(this.name + " is learning" + subject + 'at' + this.className + '.');

把单引号都改为双引号。

0 回复 有任何疑惑可以回复我~
#1

致良知 提问者

doesn't work
2015-06-04 回复 有任何疑惑可以回复我~

这个错:Uncaught TypeError: bosn.learn is not a function

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

照着老师的打的但是报错哎

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信