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中for循序中延迟加载动态效果的具体实现
Aug 18 Javascript
深入理解Javascript作用域与变量提升
Dec 09 Javascript
javascript实现浏览器窗口传递参数的方法
Sep 03 Javascript
JavaScript模块化开发之SeaJS
Dec 13 Javascript
利用JS生成博文目录及CSS定制博客
Feb 10 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
Jun 06 Javascript
web前端vue之vuex单独一文件使用方式实例详解
Jan 11 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
Mar 03 Javascript
js实现固定区域内的不重叠随机圆
Oct 24 Javascript
Node.js API详解之 querystring用法实例分析
Apr 29 Javascript
如何手写一个简易的 Vuex
Oct 10 Javascript
vue+elementUI实现表格列的显示与隐藏
Apr 13 Vue.js
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
使用dump函数,给php加断点测试
2013/06/25 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
2014/05/05 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
PHP数组去重的更快实现方式分析
2018/05/09 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
JS命名空间的另一种实现
2013/08/09 Javascript
javascript中apply和call方法的作用及区别说明
2014/02/14 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
Bootstrap3制作自己的导航栏
2016/05/12 Javascript
javascript insertAfter()定义与用法示例
2016/07/25 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
layui use 定义js外部引用函数的方法
2019/09/26 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
2020/04/03 Javascript
[03:58]2014DOTA2国际邀请赛 龙宝赛后解密DK获胜之道
2014/07/14 DOTA
[59:00]OG vs TNC 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python thread 并发且顺序运行示例
2009/04/09 Python
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
python删除文件夹下相同文件和无法打开的图片
2019/07/16 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
python 从list中随机取值的方法
2020/11/16 Python
python 实现控制鼠标键盘
2020/11/27 Python
印度最大的旅游网站:MakeMyTrip
2016/10/05 全球购物
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
大专应届生个人的自我评价
2013/11/21 职场文书
车辆工程专业求职信
2014/04/28 职场文书
销售类求职信
2014/06/13 职场文书
优秀党员推荐材料
2014/12/18 职场文书
实用求职信模板范文
2019/05/13 职场文书
Python OpenCV 图像平移的实现示例
2021/06/04 Python
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle