标签:
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、寄生构造函数模式
标签:
原文地址:http://www.cnblogs.com/smart-tian/p/4624660.html