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

继承的一些问题

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

正在回答

2 回答

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两个属性。

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

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

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

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

qq_放飞心情_0 提问者

Person.call(this,name,age);这一句是让Student继承了Person中属性是怎么继承的,我的理解是让他执行了那个函数,他这个对象就有了这2个属性,相当于给他分配属性
2016-08-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript深入浅出
  • 参与学习       281112    人
  • 解答问题       1020    个

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

进入课程

继承的一些问题

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