javascript 类定义4种方法

/*
   工厂方式--- 创建并返回特定类型的对象的 工厂函数 ( factory function ) 
*/
 

function createCar(color,doors,mpg){
	var tempCar = new Object;
	tempCar.color = color;
	tempCar.doors = doors;
	tempCar.mpg = mpg;
	tempCar.showCar = function(){
		alert(this.color + " " + this.doors);
	}
	return tempCar;
} 

/*
   构造函数方式--- 构造函数看起来很像工厂函数 
*/
function Car(color,doors,mpg){
	this.color = color;
	this.doors = doors;
	this.mpg = mpg;
	this.showCar = function(){
		alert(this.color);
	};
}  
/*
   原型方式--- 利用了对象的 prototype 属性,可把它看成创建新对象所依赖的原型 
*/
function Car(color,doors,mpg){
	this.color = color;
	this.doors = doors;
	this.mpg = mpg;
	this.drivers = new Array("nomad","angel");
}

Car.prototype.showCar3 = function(){
	alert(this.color);
}; 

/*
   混合的构造函数 /原型方式--- 用构造函数定义对象的所有非函数属性,用原型方式定义对象的函数属性(方法) 
*/
function Car(sColor, iDoors, iMpg) {
    this.color = sColor;
    this.doors = iDoors;
    this.mpg = iMpg;
    this.drivers = new Array("Mike", "Sue");
}

Car.prototype.showColor = function () {
    alert(this.color);
};  
/*
    动态原型方法--- 在构造函数内定义非函数属性,而函数属性则利用原型属性定义。唯一的区别是赋予对象方法的位置。 
*/
function Car(sColor, iDoors, iMpg) {
    this.color = sColor;
    this.doors = iDoors;
    this.mpg = iMpg;
    this.drivers = new Array("Mike", "Sue");

    if (typeof Car._initialized == "undefined") {

        Car.prototype.showColor = function () {
            alert(this.color);
        };

        Car._initialized = true;
    }
} //该方法使用标志( _initialized )来判断是否已给原型赋予了任何方法。 


你可能感兴趣的:(JavaScript,prototype)