老师,关于6-3的练习题

老师,关于6-3的练习题

这里people.name为什么是haha,他不会被cTest里面的lala覆盖吗?倒数第一行是实例化了new cTest(),此时不是应该将name为haha的覆盖掉吗?


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕星星 2018-12-14 19:05:22

非常抱歉同学,老师在第一次回复中写错字了:

http://img1.sycdn.imooc.com//climg/5c138d28000146ae08330273.jpg

应该是给cTest设置name属性是在pTest构造函数实例化之前,给同学造成了误解,希望同学能够谅解。

还有就是同学的理解不正确,并不是cTest函数实例化之后,才在原型上设置name属性。cTest不实例化,在原型上设置的name属性就已经存在了:

http://img1.sycdn.imooc.com//climg/5c138dfc00010baa05170102.jpg

console.dir()可以输出函数的属性和方法。结果如下:

http://img1.sycdn.imooc.com//climg/5c138dd30001bd1904800329.jpg

在cTest原型上name属性是存在的。

所以习题中是先给cTest函数设置的name属性值为lala,然后继承了pTest函数的name属性值为haha,覆盖了前面的,最后调用name属性的时候值为haha。

自己可以动手测试下。

好帮手慕星星 2018-12-14 17:26:53

http://img1.sycdn.imooc.com//climg/5c1375e60001c28104340407.jpg

代码中给cTest设置name属性是在pTest构造函数实例化之后,所以覆盖了前面的lala,调用name属性结果为haha。

如果将设置属性放在实例化后面,结果就是相反的了:

http://img1.sycdn.imooc.com//climg/5c13773c0001351705580141.jpg

http://img1.sycdn.imooc.com//climg/5c1377440001ce7501250033.jpg

自己可以测试下,祝学习愉快!

  • 提问者 慕尼黑4757019 #1
    老师,我还是不怎么明白,首先是pTest()实例化,这时候name应该是haha,然后再是cTest实例化,这时候应该name为lala,覆盖之前的haha才对啊,你也说到cTest设置name属性是在pTest构造函数实例化之后,所以更应该是cTest里面的name起作用,为lala啊。
    2018-12-14 18:22:14
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师