前端 - 关于javascript设计模式里构造器模式的问题

查看:64
本文介绍了前端 - 关于javascript设计模式里构造器模式的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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

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

带原型的Constructor(构造器)

    <script type="text/javascript">
            function Car(model,year,miles) {
                this.model = model;
                this.year = year;
                this.miles = miles;
            }
            /** 关于下面这段代码 **/
            Car.prototype.run = function () {
                return this.model + " has done " + this.miles + " miles ";
            };
            /** 关于上面这段代码 **/
            var Benz = new Car('S350',2010,20000);
            var Ford = new Car('Ford',2012,12000);
    
            console.log(Benz.run());//"S350 has done 20000 miles "
            console.log(Ford.run());
   </script>
   

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

解决方案

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

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

这么说你理解了吗?

这篇关于前端 - 关于javascript设计模式里构造器模式的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆