本文讨论几种js创建对象的方法,先从最好理解
1、工厂模式开始:
1 <script text="javascript"> 2 function createPerson(name,age,job){ 3 var o =new Obeject(); 4 o.name = name; 5 o.age = age; 6 o.job = job; 7 o.sayName = function(){ 8 alert(this.name); 9 }; 10 return o; 11 } 12 13 var tanya = createPerson("tanya","30","female"); 14 var ansel = createPerson("ansel","30","male"); 15 tanya.sayName(); 16 ansel.sayName(); 17 </script>
2、对象模式称为构造函数模式
1 <script text="javascript"> 2 //执行第一句代码前,js引擎会为我们生成一个对象 3 function Person(name,age,job){ 4 this.name = name; 5 this.age = age; 6 this.job = job; 7 this.sayName = function(){ 8 alert(this.name); 9 }; 10 //此处有一个隐藏的return语句,用于将之前生成的对象返回。 11 } 12 var tanya = new Person("tanya","30","female"); 13 var ansel = new Person("ansel","30","male"); 14 tanya.sayName(); 15 ansel.sayName(); 16 </script>
3、原型模式
1 <script text="javascript"> 2 function Person(){} 3 4 Person.prototype.name = name; 5 Person.prototype.age = age; 6 Person.prototype.job = job; 7 Person.prototype.sayName = function(){ 8 alert(this.name); 9 }; 10 11 var person = Person(); 12 var person2 = Person(); 13 </script>
如果使用原型对象方式,那么生成的所有对象会共享原型中的属性,这样一个对象改变了该属性也会反映到其他的对象当中。
4、使用原型+构造函数方式来定义对象
使用原型+构造函数方式来定义对象,对象之间的属性互不干扰,各个对象间共享同一个方法。