继承的一些问题

来源:8-1 概念与继承

qq_放飞心情_0

2016-08-06 15:50

People.call(this,name,age)换成this=new Person(name,age)有区别吗?

写回答 关注

2回答

  • 慧眼识天下
    2016-08-06 21:41:15

    Person.call(this,name,age);  其中的Person是指视频中的构造函数:

    function Person(name,age){

        this.name = name;

        this.age = age;

    }

    Person.call(this,name,age);其中的call是指Function.prototype.call(),其中的this在其上下文中指向Student对象。

    因此,Person.call(this,name,age);是调用Person构造函数,并把Person构造函数中的this替换为传入的this参数所代表的Student对象,因此Student对象便继承了name和age两个属性。

  • 慧眼识天下
    2016-08-06 16:27:47

    Person.call(this,name,age);这一句是让Student继承了Person中属性,并没有影响this指针。

    而this=new Person(name,age);这一句将改变this指针的值使其变为Person类型的对象。因此通过Student构造器返回的对象为this是一个Person类型的对象。后面对Student.prototype所做的设置应该对返回的Person类型的对象不起作用。

    qq_放飞心...

    Person.call(this,name,age);这一句是让Student继承了Person中属性是怎么继承的,我的理解是让他执行了那个函数,他这个对象就有了这2个属性,相当于给他分配属性

    2016-08-06 20:42:45

    共 1 条回复 >

JavaScript深入浅出

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

281101 学习 · 1020 问题

查看课程

相似问题