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中escape对应的C#解码函数 UrlDecode
Dec 16 Javascript
JS 日期比较大小的简单实例
Jan 13 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
Dec 02 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
Dec 14 Javascript
JS中用try catch对代码运行的性能影响分析
Dec 26 Javascript
angular实现商品筛选功能
Feb 01 Javascript
利用canvas实现的加载动画效果实例代码
Jul 05 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
Dec 08 Javascript
js+html5 canvas实现ps钢笔抠图
Apr 28 Javascript
微信小程序后台持续定位功能使用详解
Aug 23 Javascript
Javascript作用域和作用域链原理解析
Mar 03 Javascript
解决vue项目获取dom元素宽高总是不准确问题
Jul 29 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
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
Destoon模板制作简明教程
2014/06/20 PHP
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
jQuery选择器源码解读(二):select方法
2015/03/31 Javascript
JavaScript+canvas实现七色板效果实例
2016/02/18 Javascript
JavaScript 消息框效果【实现代码】
2016/04/27 Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
2016/08/09 Javascript
Angular 4环境准备与Angular cli创建项目详解
2017/05/27 Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
2018/02/24 jQuery
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
2020/04/07 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
Python的Tornado框架异步编程入门实例
2015/04/24 Python
python通过索引遍历列表的方法
2015/05/04 Python
Python2.x版本中cmp()方法的使用教程
2015/05/14 Python
详解使用Python处理文件目录的相关方法
2015/10/16 Python
Python编程之event对象的用法实例分析
2017/03/23 Python
pip matplotlib报错equired packages can not be built解决
2018/01/06 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
解决pyqt5中QToolButton无法使用的问题
2019/06/21 Python
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
python数字类型math库原理解析
2020/03/02 Python
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
个人实用简单的自我评价
2013/10/19 职场文书
公证委托书
2014/08/01 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书
七一晚会主持词
2015/06/29 职场文书
亲情作文之母爱
2019/09/25 职场文书
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB