建立对象的几种方式(一)

第一种:用Object构造函数前端

  var a = new Object();设计模式

  var b = new Object();函数

第二种:对象字面量的方式学习

  var a = {};字体

  a.name = 'li';this

  a.age = 21;spa

第一种和第二种建立对象的方式有个明显的缺点:使用同一个接口建立不少对象,会产生大量的重复代码。好比:咱们建立一个a b c三个对象,若是给他们添加属性的时候要分别添加,那万一有一万个对象呢?一百万个呢?咱们不是上帝,挥一挥衣袖,人就出来了。设计

咱们虽然也是挥一挥衣袖,可是若是创造如此庞大的对象群体,估计就算手不残废了,键盘也得换个几百个吧!嘿嘿……。对象

为了解决这个问题,人们开始使用一种工厂模式的变体。接口

  那咱们先理解一下什么是工厂模式?

    工厂模式:这是软件工程领域的一种广为人知的一种设计模式。这种模式抽象了建立具体对象的过程。

      好比写一个word那样的程序,它能够打开doc、rtf、txt等好几种文件格式,而对于这些文件的处理方法是不一样的,好比txt就不能保存文字颜色字体之类的信息,那么我可能这样设计:

word主程序,一个类Application,它有一个虚方法(或抽象方法,不过C#中抽象方法只能在抽象类里)叫OpenFile,用来打开指定的文件,而后返回一个Doucument类的实例,这个类能够直接把它的内容显示在屏幕上,word处理的主体是这个类。这个Application

类还有不少方法好比关闭打印之类的。

         而后从Application类派生出一个子类TxtApplication,父类中OpenFile是虚方法,没有实现,在子类中重写这个方法,打开Txt文档,读取txt文件,而后返回一个Document类。

而后再从Application里派生一个子类RichTxtApplication,也重写OpenFile,它打开rtf文档,从里面读取相应的文档和文档的格式信息,而后也返回一个Document类。

      最后,根据必定的策略(好比用户要打开的文件的扩展名是“txt”,就实例化一个txtApplication,而后调用它的OpenFile方法得到Document;若是扩展名是“rtf”,就实例化一个rtfApplication,调用它的OpenFile方法得到Document)。

这样,Application类中的OpenFile方法就叫作工厂方法,这种“一个类但愿由它的子类指定它所建立的对象”的方法就是工厂模式

    这里简单的作了一个比喻,相信你们都可以理解。

    由工厂模式在ECMAScript衍生除了不少创造对象的模式。

先介绍第一中模式:

  1、工厂模式

    function creatPerson(name,age,sex){

      var a = new Object();

      a.name = name;

      a.age = age;

      a.job = job;

      a.sayAge = function(){

        alert(this.age);

      }

      return a;

    }

  var person1 = creatPerson('li',12,'boss');

  person1.sayAge();

  咱们能够无数次的调用createPerson()这个函数,用来创造对象,而且建立的对象实例里面总会有三个属性和一个方法。因此工厂模式建立了建立多个类似对象的问题,可是却没有解决对象识别的问题。因而下一个新模式就出现了。(这里先介绍一个)

  随着时代的发展,总会有新的东西取代旧东西。咱们的前端亦是如此,咱们只有不断的努力学习新的知识,新的思想,才不会被这个社会所淘汰。我是刚开始接触前端的小菜鸟一枚,只是想写点随笔,记录天天的点点滴滴,水平有限,但愿你们能对我写的东西能进行批评指正,我都会虚心接受,虽然我如今写的东西很是的浅,只是但愿有跟我同样的前端,能从中得到哪怕一小点的知识,由于我入职的是电商,之后我把我在工做中的问题与解决方案分享给你们,立刻就要作自营平台了。但愿本身通过这一次的挑战。能有一个很大的提高。由于如今正在学习js,因此把工做之余看的一些东西,分享给你们。但愿你们都能快乐的工做,永远不放弃!^_^

相关文章
相关标签/搜索