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


Posted in Javascript onDecember 07, 2009

在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方式
Javascript 相关文章推荐
关于flash遮盖div浮动层的解决方法
Jul 17 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
May 19 Javascript
Jquery树插件zTree用法入门教程
Feb 17 Javascript
Nginx上传文件全部缓存解决方案
Aug 17 Javascript
jQuery UI库中dialog对话框功能使用全解析
Apr 23 Javascript
bootstrap 设置checkbox部分选中效果
Apr 20 Javascript
JS查找数组中重复元素的方法详解
Jun 14 Javascript
AugularJS从入门到实践(必看篇)
Jul 10 Javascript
提高Node.js性能的应用技巧分享
Aug 10 Javascript
JS中的BOM应用
Feb 02 Javascript
typescript配置alias的详细步骤
Aug 12 Javascript
MutationObserver在页面水印实现起到的作用详解
Jul 07 Javascript
javascript prototype原型操作笔记
Dec 07 #Javascript
javascript Array.sort() 跨浏览器下需要考虑的问题
Dec 07 #Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
Dec 07 #Javascript
js event事件的传递与冒泡处理
Dec 06 #Javascript
IE和firefox浏览器的event事件兼容性汇总
Dec 06 #Javascript
js 操作select相关方法函数
Dec 06 #Javascript
JavaScript 对象模型 执行模型
Dec 06 #Javascript
You might like
php.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
php短网址和数字之间相互转换的方法
2015/03/13 PHP
windows下安装php的memcache模块的方法
2015/04/07 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
js实现温度计时间样式代码分享
2015/08/21 Javascript
js实现页面跳转的几种方法小结
2016/05/16 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
JS清除字符串中重复值的实现方法
2016/08/03 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
2017/07/31 Javascript
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
jquery实现简单自动轮播图效果
2020/07/29 jQuery
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python从sqlite读取并显示数据的方法
2015/05/08 Python
Python中使用bidict模块双向字典结构的奇技淫巧
2016/07/12 Python
Python+Selenium自动化实现分页(pagination)处理
2017/03/31 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
2018/01/10 Python
使用Python进行AES加密和解密的示例代码
2018/02/02 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
2020/01/06 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
美国知名保健品网站:LuckyVitamin(支持中文)
2017/08/09 全球购物
中学清明节活动总结
2014/07/04 职场文书
建筑安全生产目标责任书
2014/07/23 职场文书
公司财务会计主管应聘求职信
2014/09/26 职场文书
政风行风整改报告
2014/11/06 职场文书
付款证明格式范文
2015/06/19 职场文书
golang中的struct操作
2021/11/11 Golang
vue使用wavesurfer.js解决音频可视化播放问题
2022/04/04 Vue.js