前端 - 关于javascript设计模式里构造器模式的问题
黄舟
黄舟 2017-04-11 11:43:26
[JavaScript讨论组]

看到这里一篇文章《JavaScript设计模式一:工厂模式和构造器模式》

https://segmentfault.com/a/11...
关于这篇文章里的构造器模式。
最后有一段:

带原型的Constructor(构造器)

    
   

   不用prototyp,把this.run = function(){...}当成方法写在构造函数里也可以正常运行,两者有什么不一样?
   和单例模式有关吗?还是可以避免重复调用的资源浪费?
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
PHP中文网

如果你只有 Car 这一个类用到 run 方法,那么两种写法在性能上是没有区别的。

但是如果你有 Car1Car10 十个类:
如果你写在类内部,那么你的内存里将有10个 run 方法。
如果你使用prototyp,那么你的内存里将有1个 run 方法。

这么说你理解了吗?

天蓬老师

楼上说的不正确,写到原型上避免的不是类之间的浪费,是不同对象之间的浪费,你如果写在构造函数中,没次调用new获取一个对象,都会生成一个函数体完全一样的函数,而使用prototype委托,则所有的实例的run方法都委托到了prototype对象上,多少个对象都只有一个函数,楼上说的类是错的。原型就是构造函数和对象实例的链接,与不同的类没有关系。他说的十个类,除非你每次生成一个类都自己重新写一遍run函数,否则不会造成他说的那个结果。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号