// 混合构造函数/原型方式 /*创建造函数,设置其属性;在构造函数之外,对其用原型方式赋予方法*/ function If(name,label){ this.name = name; this.label = label; } If.prototype.showLabel = function(){ alert(this.name+",you are so"+this.label); } var if1 = new If("if","handsome"); if1.showLabel(); // 原型方式 /*创建空构造函数,参数须为空;在构造函数之外,对其用原型方式赋予属性及方法*/ function Girl(){} Girl.prototype.name = "melin"; Girl.prototype.color = "pinck"; Girl.prototype.showName = function(){ alert(this.name); }; var melin = new Girl(); melin.showName(); // 构造函数方式 /*为避免每次创建对象,都重现创建新函数showName()(这意味着每个对象都有自己的showName()版本,事实上,每个对象都共享同一个函数showName),所以,把showName()独立出来,在用Car.showName指针指向showName()*/ function showName(){ alert(this.name); } //创建构造函数 function Car(name,color){ this.name = name; this.color = color; this.showName = showName; } //实例化一个新对象 var car1 = new Car("koko","red"); car1.showName(); //工厂方式 /*为避免每次创建对象,都重现创建新函数showName()(这意味着每个对象都有自己的showName()版本,事实上,每个对象都共享同一个函数showName),所以,把showName()独立出来,在用oBj.showName指针指向showName()*/ var showName = function(){ alert(this.name) } /*创建creatO对象*/ function creatO(nameC,heightC){ /*new一个对象*/ var oBj =new Object; oBj.name = nameC; oBj.height = heightC; /*将对象方法指针指向函数showName*/ oBj.showName = showName; /*返回创建的对象oBj,当调用函数creatO时,就创建对象oBj*/ return oBj; } /*实例化对象*/ var oBj1=creatO("mary",160); var oBj2=creatO("tom",160); /*调用实例对象方法*/ oBj1.showName(); oBj2.showName();