JavaScript 对象

本文讨论几种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、使用原型+构造函数方式来定义对象 

 1 <script text="javascript">  
 2     function Person(name,age,job){   
 3         this.name = name;   
 4         this.age = age;   
 5         this.job = job;   
 6     }   
 7     Person.prototype.sayName= function(){   
 8         alert(this.name);   
 9     };   
10     var tanya = new Person("tanya","30","female");   
11     var ansel = new Person("ansel","30","male");   
12     tanya.sayName();   
13     ansel.sayName();   
14 </script>  

使用原型+构造函数方式来定义对象,对象之间的属性互不干扰,各个对象间共享同一个方法。

原文地址:https://www.cnblogs.com/laj12347/p/2962591.html