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 相关文章推荐
js常用排序实现代码
Dec 28 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
Sep 14 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
Feb 21 Javascript
JavaScript异步编程Promise模式的6个特性
Apr 03 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
Apr 11 Javascript
介绍一个简单的JavaScript类框架
Jun 24 Javascript
Javascript模仿淘宝信用评价实例(附源码)
Nov 26 Javascript
jQuery EasyUI封装简化操作
Sep 18 Javascript
jQuery图片瀑布流的简单实现代码
Mar 15 Javascript
微信小程序实现图片轮播及文件上传
Apr 07 Javascript
vue.js给动态绑定的radio列表做批量编辑的方法
Feb 28 Javascript
react配置antd按需加载的使用
Feb 11 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
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
提升PHP执行速度全攻略
2006/10/09 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
php将金额数字转化为中文大写
2015/07/09 PHP
Mootools 1.2教程 排序类和方法简介
2009/09/15 Javascript
JavaScript 计算图片加载数量的代码
2011/01/01 Javascript
自制基于jQuery的智能提示插件一枚
2011/02/18 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
jQuery实现手机号码输入提示功能实例
2015/04/30 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
浅谈Vue数据绑定的原理
2018/01/08 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
RxJS的入门指引和初步应用
2019/06/15 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
Python 爬虫多线程详解及实例代码
2016/10/08 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
python编辑用户登入界面的实现代码
2018/07/16 Python
使用IDLE的Python shell窗口实例详解
2019/11/19 Python
解决torch.autograd.backward中的参数问题
2020/01/07 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
Python自动登录QQ的实现示例
2020/08/28 Python
PyQt实现计数器的方法示例
2021/01/18 Python
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
中文系学生自荐信范文
2013/11/13 职场文书
化工专业个人的求职信范文
2013/11/28 职场文书
建筑管理专业求职信
2014/07/28 职场文书
文艺晚会开场白
2015/05/29 职场文书
安全教育片观后感
2015/06/17 职场文书
小学英语新课改心得体会
2016/01/22 职场文书