javascript创建对象的七种模式

1、工厂模式

 1 function createPerson(name,age){
 2        var obj = new Object();
 3        obj.name = name;
 4        obj.age = age;
 5        function sayName(){
 6            alert(obj.name);
 7        };
 8        sayName();
 9        return obj;
10    }
11     var person = createPerson("wutian",22);

2、构造函数模式

1 function Person(name,age){
2        this.name = name;
3        this.age = age;
4        function sayName(){
5            alert(this.name);
6        };
7        sayName();
8    }
9     var person = Person("wutian",22);

按照惯例,构造函数始终应该以一个大写字母开头,其中经过了四个步骤:

构造一个新对象->将构造函数的作用域赋值给新对象->执行构造函数代码->返回新对象

 3、原型模式

 1 function Person(){
 2 
 3     }
 4     Person.prototype.name = "wutian";
 5     Person.prototype.age = 22;
 6     Person.prototype.sayName = function(){
 7         alert(this.name);
 8     }
 9     var person1 = new Person();
10     var person2 = new Person();
11     alert(person1.name === person2.name);//true

说明person1和person2访问的是同一个name

4、组合使用构造函数模式和原型模式

 

 1  function Person(name,age){
 2         this.name = name;
 3         this.age = age;
 4     }
 5     Person.prototype= {
 6             sayName : function(){
 7                 alert(this.name);
 8             }
 9     }
10     var person1 = new Person('wu',22);
11     var person2 = new Person('wu',22);
12     alert(person1.name);
13     alert(person1 === person2);//false
14     alert(person1.sayName === person2.sayName);//true

5、动态原型模式

 

 1  function Person(name,age){
 2         this.name = name;
 3         this.age = age;
 4         if(typeof this.sayName != "function"){
 5             Person.prototype.sayName = function () {
 6                 alert(this.name);//如果sayName方法不存在则创建函数
 7             }
 8         }
 9     }
10     var person1 = new Person('wu',22);
11     person1.sayName();

6、寄生构造函数模式

 

posted on 2015-07-06 16:13  句号小弟wutian  阅读(135)  评论(0编辑  收藏  举报