面向对象的语言具备一个共同的标志,那就是具备“类”的概念,可是在javascript中没有类的概念,在js中将对象定义为“无序属性的集合,其属性能够包含基本值,对象或者函数”,即其将对象看做是一组名值对的散列表。这样问题就来了,如何建立对象呢?javascript
在最开始时使用object构造函数和对象字面量来建立单个对象,下面简要介绍这两种方法。前端
object构造函数:建立自定义对象的最简单方式就是建立一个object的实例,而后为这个实例添加属性和方法:java
var person=new object(); person.name="haha"; person.age=20; person.job="搞笑工做者"; person.sayName=function(){ alert(this.name); }; //前端全栈学习交流圈:866109386 //面向1-3经验年前端开发人员 //帮助突破技术瓶颈,提高思惟能力
在上面的代码中,定义了一个person对象,而且添加了三个属性和一个方法,其中方法采用的时函数表达式的方式实现,这是用object构造函数的方式建立一个对象。函数
对象字面量:学习
var person={ name:"haha", age:20, job:"搞笑工做者", sayName:function(){ alert(this.name); } }
以上代码中一样建立了一个person对象,这种方法相似于代码块的方式,实现了对一个person对象的建立。this
以上这两种方法中,都须要大量重复定义,在咱们须要建立对象时就须要重复以上代码,不够精炼,因此出现了工厂模式和构造函数模式类建立对象的方法。code
工厂模式:对象
工程模式抽象了建立具体对象的过程(专业书籍中给出),其实说的比较明白点就是采用函数的形式,用函数来封装建立对象的过程,再建立对象时以调用函数的形式建立。例如:ip
function createPerson(name,age,job){ var o=new object(); o.name="haha"; o.age=20; o.job="搞笑工做者"; o.sayName=function(){ alert(this.name); }; return o; } var person1=createPerson("hehe",22,"呵呵工做者"); var person2=createPerson("heihei",23,"嘿嘿工做者"); //前端全栈学习交流圈:866109386 //面向1-3经验年前端开发人员 //帮助突破技术瓶颈,提高思惟能力
在这种工厂模式下,将以object构造函数建立对象的方法封装到了一个函数中,在之后的建立对象的过程当中,直接调用此方法就能够建立出一个接着一个的对象。开发
构造函数模式:
构造函数模式相对于工厂模式的优点在于构造函数模式能够建立特定类型的对象。
function Person(name,age,job){ this.name=name; this.age=age; this.job=job; this.sayName=function(){ alert(this.name); }; } var person1=new Person("hehe",22,"呵呵工做者"); var person2=new Person("heihei",23,"嘿嘿工做者"); //前端全栈学习交流圈:866109386 //面向1-3经验年前端开发人员 //帮助突破技术瓶颈,提高思惟能力
在以上代码中,定义一个Person()的方法,在Person()方法中,将其属性进行了实例化,这种方法相似于在面向对象语言中在实例化类时直接会调用的构造函数,利用这种方法,将此函数大体至关于面向对象语言中的类,能够在之后的代码中不断的实例化,用以不断建立出此类的对象。在Javascript中,这种构造函数也是一种函数,不过是专门用于建立对象而已。