js 函数常见的三种实例化方式
1 //工厂模式 2 function oj(){ 3 var lio=new Object(); //创建对象,对象属性赋值 4 lio.name='lio'; 5 lio.attr='男'; 6 lio.hobby=function(){ 7 var li=document.createElement("p"); 8 var txt=document.createTextNode("三妹"); 9 li.appendChild(txt); 10 document.body.appendChild(li); 11 }; 12 return lio; 13 } 14 var person=oj(); 15 //alert(person.name); 16 17 //构造函数模式 18 function oj2(name,age){ 19 this.name=name; 20 this.age=age; 21 this.hobby=function(){ 22 var li=document.createElement("p"); 23 var txt=document.createTextNode("三妹"); 24 li.appendChild(txt); 25 document.body.appendChild(li); 26 } 27 } 28 var person2=new oj2('三妹',123); 29 person2.hobby(); 30 alert(person2.name); 31 32 //原型模式 33 function oj3(){ 34 //this.name='lio'; 35 } 36 oj3.prototype.name='lio'; 37 oj3.prototype.love= function (name) { 38 alert("爱"+name); 39 }; 40 var person3=new oj3(); 41 //检测是在实例中还是在原型中 42 alert(person3.hasOwnProperty("name")); 43 alert(person3.hasOwnProperty("rename")); 44 person3.love('三妹'); 45 46 //混合模式 47 function oj4(age) { 48 this.age=age; 49 this.rename='aaaa'; 50 }; 51 oj4.prototype={ 52 constructor:oj4, 53 name:'lio', 54 age:123, 55 love: function (name) { 56 alert(name+"爱三妹"); 57 } 58 }; 59 var person4=new oj4(18); 60 alert(person4.hasOwnProperty("age"));//true 61 person4.love('lio');