当前位置: 首页 > 图文教程 > 网络编程 > Javascript > JavaScript 常见对象类创建代码与优缺点分析

Javascript
JS 文件本身编码转换 图文教程
jQuery Ajax之$.get()方法和$.post()方法
jQuery Ajax之load()方法
JavaScript 核心参考教程 内置对象
JavaScript 核心参考教程 RegExp对象
javascript hashtable实现代码
百度留言本js 大家可以参考下
javascript 判断某年某月有多少天的实现代码 推荐
让iframe子窗体取父窗体地址栏参数(querystring)
jquery pagination插件实现无刷新分页代码
jQuery与javascript对照学习 获取父子前后元素 实现代码
通用javascript脚本函数库 方便开发
JQuery 绑定事件时传递参数的实现方法
支持IE,Firefox的javascript 日历控件
javascript 变速加数功能实现代码
extjs 学习笔记(一) 一些基础知识
extjs 学习笔记(二) Ext.Element类
Jquery 学习笔记(一)
一些技巧性实用js代码小结
jquery 常用操作整理 基础入门篇

Javascript 中的 JavaScript 常见对象类创建代码与优缺点分析


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 86 ::
收藏到网摘: n/a

这几种javascript类定义方式中,最常用的是杂合prototype/constructor 和 动态prototype方式。 在Javascript中构建一个类有好几种方法:
1.Factory 方式
复制代码 代码如下:

function createCar(){
var car = new Object();
car.color=”b”;
car.length=1;
car.run=function(){alert(”run”);}
return car;
}

定义这么一个函数之后,就可以用:
var car1 = createCar();
var car2 = createCar();
来创建新的对象,这种方式的问题是每一次创建一个car对象,run Function也都必须重新创建一次.浪费内存
2.Constructor方式
复制代码 代码如下:

function Car(){
this.color=”b”;
this.length=1;
this.run=function(){alert(”run”);}
}
var car1=new Car();
var car2=new Car();

这是最基本的方式,但是也存在和factory方式一样的毛病
3.prototype方式
复制代码 代码如下:

function Car(){
}
Car.prototype.color=”b”;
Car.prototype.length=1;
Car.prototype.run=function(){alert(”run”);
}

这个方式的缺点是,当这个类有一个引用属性时,改变一个对象的这个属性也会改变其他对象得属性
比如:
复制代码 代码如下:

Car.prototype.data1=new Array();
var car1=new Car();
var car2=new Car();
car1.data1.push(”a”);

此时,car2.data也就包含了”a”元素
4.Prototype/Constructor杂合方式 [常用]
复制代码 代码如下:

function Car(){
this.color=”b”;
this.length=1;
this.data1=new Array();
}
Car.prototype.run=function(){
alert(”dddd”);
}

这种方式去除了那些缺点.是目前比较大范围使用的方式
5.动态prototype方式 [常用]
复制代码 代码如下:

function Car(){
this.color=”b”;
this.length=1;
this.data1=new Array();
if(typeof Car.initilize==”undefined”){
Car.prototype.run=function(){alert(”a”);}
}
Car.initilize=true;
}

这几种方式中,最常用的是杂合prototype/constructor 和 动态prototype方式