老师,您好!

老师,您好!

老师请问我们之前讲课的时候比如add函数  

function add(a, b){

           return a + b;

       }

       add(1,2);

如果以add这个函数为例子,请问怎么理解原型和原型链。请老师解解惑,谢谢您

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

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

4回答
好帮手慕言 2019-12-21 19:08:47

同学你好,使用这种方式最大的问题在于每次创建实例的时候都要重新创建一次方法。

原型方式可以让所有对象实例共享它所包含的属性及方法,性能会更好些。

如果还有其他疑问,建议在问答区重新提问,便于后期查找总结

如果我的回答帮到了你,欢迎采纳,祝学习愉快~

好帮手慕言 2019-12-21 14:07:59

同学你好,同学提到的写法是如下方式吗?

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

如果是的话,那么:是可以这样写的。构造函数里面的this,指向实例化对象,所以通过this定义的属性或者方法,会被实例化对象继承,可以打印下看结果:

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

控制台:

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

如果还有其他疑问,建议在问答区重新提问,便于后期查找总结

如果我的回答帮到了你,欢迎采纳,祝学习愉快~

  • 提问者 一物一世界 #1
    这样不是和prototype同样的实现了继承吗,为何多此一举还要用prototype呢,请老师帮忙
    2019-12-21 14:10:16
好帮手慕言 2019-12-21 10:03:37

同学你好,普通函数也是有的。

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

控制台:
http://img1.sycdn.imooc.com//climg/5dfd7d0e094d256503260149.jpg

但是一般情况下会在构造函数上用。

如果还有其他疑问,建议在问答区重新提问,便于后期查找总结

如果我的回答帮到了你,欢迎采纳,祝学习愉快~

  • 提问者 一物一世界 #1
    老师,如果是构造函数的话,我们定义属性或者方法的时候可以用this. 的方法来实现调用构造函数的方法或者属性,请老师解解惑,谢谢您!
    2019-12-21 10:09:05
好帮手慕言 2019-12-20 15:16:41

同学你好,可以参考下方理解:

1、prototype是原型对象,它是函数上面的属性。

2、__proto__,它是实例化对象上的属性。构造函数实例化之后,实例对象上的原型__proto__会继承构造函数的原型对象prototype。如下

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

实例化对象上的__proto__里面有一个say方法。

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

这一块的知识比较抽象,不太好理解,建议:同学跟着老师视频中讲解的案例,写一写代码,结合实现的效果,帮助自己更好的去理解。

如果帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 一物一世界 #1
    老师您好,我这个add是普通的函数,不是构造函数,那么普通函数就没有原型与原型链这一说法吗?或者说只有构造函数才有原型与原型链,普通函数没有是这样的吗?
    2019-12-21 01:28:37
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

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

在线咨询

领取优惠

免费试听

领取大纲

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