javascript定义类的几种方法

王朝html/css/js·作者佚名  2008-11-06
窄屏简体版  字體: |||超大  

/*

工厂方式--- 创建并返回特定类型的对象的 工厂函数 ( 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 )来判断是否已给原型赋予了任何方法。

利用原型prototype。 function Bar(text, url) {

this.text = text;

this.url = url;

}

Bar.prototype = {

render : function() {

document.write('<a href="' + this.url + '">' + this.text + '</a>');

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航