1 // 工厂模式
2 function createPerson(name, age){
3 var o = new Object();
4 o.name = name;
5 o.age = age;
6 o.show = function(){
7 alert("hello s");
8 };
9 return o;
10 }
11 var person = createPerson("zhangsan", "22");
12 person.show();
hello s
1 // 构造函数模式
2 function Person(name,age){
3 this.name = name;
4 this.age = age;
5 this.show = function(){
6 alert("hello");
7 }
8 }
9 var person = new Person("zhangsan", "20");
10 person.show();
hello
1 // 原型模式
2 function Person(){
3 }
4 Person.prototype.name = "kuikui";
5 var person = new Person();
6 alert(person.name);
kuikui
1 // 组合构造原型
2 function Person(name,age){
3 this.name = name;
4 this.age = age;
5 this.show = function(){
6 alert("hello");
7 }
8 }
9 Person.prototype = {
10 constructor :Person,
11 name : "kuikui",
12 say : function(){
13 alert("say me");
14 }
15 }
16 var person1 = new Person("aa","23");
17 person1.say();
18 alert(person1.name);//构造优先原型 aa
say me
aa
1 // 动态原型
2 function Person(name, age){
3 this.name = age;
4 this.age = age;
5 if(typeof this.show != "function"){
6 this.show = function(){
7 alert("构造 show");
8 }
9 }
10 this.test = function(){
11 alert("构造 test");
12 }
13 }
14 Person.prototype = {
15 show : function(){
16 alert("原型 show")
17 }
18 }
19 var person = new Person();
20 var person1 = new Person();
21 person.show();
22 person1.test();
23 //alert(Person.prototype.show);
原型 show
构造 test