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 相关文章推荐
你可能不再需要JQUERY
Mar 09 Javascript
JavaScript 设计模式学习 Factory
Jul 29 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
Jul 30 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
Oct 10 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
Mar 30 Javascript
laypage分页控件使用实例详解
May 19 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
Nov 28 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
Mar 25 Javascript
微信小程序 转发功能的实现
Aug 04 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
Jun 14 jQuery
JavaScript中Array方法你该知道的正确打开方法
Sep 11 Javascript
jQuery/JS监听input输入框值变化实例
Oct 17 jQuery
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
松下Panasonic RF-B65电路分析
2021/03/02 无线电
PHP 执行系统外部命令 system() exec() passthru()
2009/08/11 PHP
PHP+JS+rsa数据加密传输实现代码
2011/03/23 PHP
php学习笔记之面向对象编程
2012/12/29 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
php json_encode与json_decode详解及实例
2016/12/13 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
将HTML自动转为JS代码
2006/06/26 Javascript
关于B/S判断浏览器断开的问题讨论
2008/10/29 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
Jquery封装tab自动切换效果的具体实现
2013/07/13 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
2013/12/31 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
node.js Promise对象的使用方法实例分析
2019/12/26 Javascript
基于vue hash模式微信分享#号的解决
2020/09/07 Javascript
python 数据的清理行为实例详解
2017/07/12 Python
python人民币小写转大写辅助工具
2018/06/20 Python
python 对key为时间的dict排序方法
2018/10/17 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
Python socket模块实现的udp通信功能示例
2019/04/10 Python
python求最大值最小值方法总结
2019/06/25 Python
pycharm new project变成灰色的解决方法
2019/06/27 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
2019/07/22 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
Python实现图片添加文字
2019/11/26 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
爱普生美国官网:Epson美国
2018/11/05 全球购物
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
教导处工作制度
2014/01/18 职场文书
个人工作主要事迹
2014/05/08 职场文书
安全生产年活动总结
2014/08/29 职场文书
pytorch 中autograd.grad()函数的用法说明
2021/05/12 Python
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python