老师我测试了一下,实现继承可以是其他方式,

老师我测试了一下,实现继承可以是其他方式,

比如课程讲的用这个寄生式继承

  function inheritPrototype(subType, superType) {

            var prototype = Object.create(superType.prototype);

            subType.prototype = prototype;

        };

 inheritPrototype(Student, People);

我通过理解这些代码,想到了一些继承方式不知道对不对,

第一个,

  function inheritPrototype(subTypesuperType) {

         subType.prototype  = Object.create(superType.prototype);

        }; 直接用子类的  subType.prototype指

 inheritPrototype(StudentPeople);

第二个,

舍弃上面的,直接外边加

Student.prototype = People.prototype;

我测试了一下也是可以继承的,

请问老师我想到这2种方式有缺点和错误吗?


正在回答

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

2回答

同学你好,是不会覆盖的,这种写法和第一种是一样的,只不过没用形参,用的是实参

https://img1.sycdn.imooc.com//climg/61d7cff809ffebc304770034.jpg

https://img1.sycdn.imooc.com//climg/61d7d037095a6b3708260582.jpg

好帮手慕星星 2022-01-07 11:54:05

同学你好,第一种方式没问题,和课程中是一样的

https://img1.sycdn.imooc.com//climg/61d7b8f4090908f605870228.jpg

第二种方式不一样,不建议使用这种

https://img1.sycdn.imooc.com//climg/61d7b94f09ac27a215650473.jpg

祝学习愉快!

  • 提问者 慕田峪1427181 #1

    Student.prototype =Object.create(People.prototype);

    那老师我把第二种方式直接修改成这样的,还会覆盖原来的方法吗?

    2022-01-07 11:58:56
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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