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

关于prototype的几个问题

如果把
Student.prototype=Object.create(Person.prototype)
改成
Student.prototype=Person.prototype

1.修改后Student和Person的prototype就都变成 了Student   ,Bosn老师说的是Person.prototype被污染了,这句话怎么理解??


2.Bosn 老师  我看到constructor里面的prototype有什么意义?





正在回答

1 回答

首先你要明白什么时候继承,比如你继承我的财产,我的财产就是你的,而你自己的还是你自己的。

同样,Student.prototype=Object.create(Person.prototype)这条语句是Student.prototype继承了Person.prototype的属性。再继承属性之后,Student还可以设置自己的属性(Person不会拥有)。

而Student.prototype=Person.prototype会导致在Student.prototype继承了Person.prototype的属性之后,Student.prototype设置自己的属性,Person.prototype也会拥有该属性。从而导致了Person.prototype被污染了。

一般来说,一个对象的prototype里会有constructor和__proto__两个内置属性,constructor一般是该函数对象(数组类型),而__proto__就是原型链咯


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

举报

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

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

进入课程

关于prototype的几个问题

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