本文地址:http://www.cnblogs.com/veinyin/p/7608000.html
为了避免大量重复代码产生,可采用以下方法创建对象
1 工厂模式
1 function createPerson(name,age,job){ 2 var o = new Object(); 3 o.name = name; 4 o.age = age; 5 o.job = job; 6 return o; 7 } 8 9 var person1 = createPerson("Bob",23,"Doctor"); 10 var person2 = createPerson("Lily",21,"Student");
其实就是一个函数,在函数里面创建一个对象,给对象赋上传过来的值,再把这个对象返回给调用的地方。
2 构造函数模式
1 function People(name, age, job){ 2 this.name = name; 3 this.age = age; 4 this.job = job; 5 } 6 7 var people1 = new People("Bob",23,"Doctor"); 8 var people2 = new People("Lily",21,"Student");
构造函数大家都知道,C++已经学过就不多说了。
3 原型模式
1 function Person(){} 2 3 Person.prototype = { 4 name: "Bob", 5 age: 23, 6 job: "Doctor" 7 }; 8 9 var people1 = new Person(); 10 11 people1.name = "Lily"; 12 people1.age = 21; 13 people1.job = "Student";
这样把属性也给了 prototype,不太推荐。
4 寄生构造函数模式
代码就不贴了,工厂模式的定义,但是实例化方法类似于构造函数,使用 new 关键字
-
实际创建自定义对象时会构造函数与原型模式混合使用,构造函数定义实例属性,原型模式定义方法和共享的属性,这样可以最大限度地节约内存