第一种:用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,因此把工做之余看的一些东西,分享给你们。但愿你们都能快乐的工做,永远不放弃!^_^