关于js中构造函数与原型对象相结合的模式的疑惑与想法

来源:互联网 发布:如何设置mac桌面图标 编辑:程序博客网 时间:2024/05/29 07:30

js目前来说主要三种,一个是工厂模式,工厂模式是最简单的,但是与之而来的问题也很严重,耗费内存,这一点就很严重,在当前只是做一些小东西还可以,但是如果以后大型对象,一个对象很多种方案属性,使用工厂模式就会严重消耗内存,js不比其他语言,js是运行在浏览器中的,js是单线程的,浏览器却是多线程的,也就是说js不可能吃掉太多浏览器的内存,因为浏览器也要工作,而且浏览器的内存空间也是从系统手中一点一点求来的,所以js才是最应该注重算法,以及写法的,尽量避免多余的空间消耗,我当前知道但是水平不行只能以后注意,然后第二种就是构造函数,利用转移this的方法,js中的this真的是个让人又爱又恨,我水平有限也说不清,暂时只能理解到当前作用域这个地方,构造函数解决了谁创建的实例这个问题,那么还是没解决内存这个事,这个时候就要用到原型对象模式,通过原型对象进行创建的实例,都有与原型对象相同的属性方法,为什么,这儿是要用到js作用域链的问题,js有一个概念,作用域链,每一个函数都可以看作一个作用域,可以作用域内包裹作用域,简单来说就是函数套函数,这个时候内部的函数我们称他为外面函数的方法,但是他也是有作用域的,他可以访问外部函数的作用域,但是外部的作用域不能,闭包就是这么来的,那么为什么能继承,当我们创建一个函数,这个是我们去使用他继承的方法的时候,实例对象会在内部寻找,找不到的时候会前往原型对象去找,如果找到了就会运行,

                  

运用这个特性,我们可以进行有差异的继承,比如说创建两个实例,这个是对第二个实例创建一个和原型对象中相同的方法名字的本地方法,他会覆盖掉原型中的方法,但是却不会修改原型,
目前来说比较多的是使用构造函数与原型对象相结合的方法,将公用的方法放入原型对象中,然后将属性用构造器来创建,这种是最好的方法。

0 0
原创粉丝点击