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

来源:8-1 概念与继承

致良知

2015-06-04 11:25

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');


写回答 关注

4回答

  • Bosn
    2015-06-05 10:31:03
    已采纳

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



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

    致良知

    赞!好了,谢谢老师

    2015-06-05 13:22:40

    共 1 条回复 >

  • 定定
    2015-06-10 23:02:27

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

  • 正_0001
    2015-06-04 11:40:56

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

    把单引号都改为双引号。

    致良知

    doesn't work

    2015-06-04 14:23:07

    共 1 条回复 >

  • 致良知
    2015-06-04 11:26:07

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

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281102 学习 · 1020 问题

查看课程

相似问题