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 相关文章推荐
使用Java实现简单的server/client回显功能的方法介绍
May 03 Javascript
javascript实现TreeView 无刷新展开的实例代码
Jul 13 Javascript
7个JS基础知识总结
Mar 05 Javascript
Node.js实现在目录中查找某个字符串及所在文件
Sep 03 Javascript
js实现html table 行,列锁定的简单实例
Oct 13 Javascript
用JavaScript实现让浏览器停止载入页面的方法
Jan 19 Javascript
jQuery中的on与bind绑定事件区别实例详解
Feb 28 Javascript
Bootstrap超大屏幕的实现代码
Mar 22 Javascript
JS模拟实现哈希表及应用详解
May 04 Javascript
vue.js实现格式化时间并每秒更新显示功能示例
Jul 07 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
Dec 17 Javascript
js 计数排序的实现示例(升级版)
Jan 12 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 存储文本换行实现方法
2010/01/05 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
php跨域调用json的例子
2013/11/13 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
JQuery选择器绑定事件及修改内容的方法
2015/01/23 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
js 获取范围内的随机数实例代码
2016/08/02 Javascript
js实现带简单弹性运动的导航条
2017/02/22 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
AngularJS 仿微信图片手势缩放的实例
2017/09/28 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
Angular8 Http拦截器简单使用教程
2019/08/20 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
2020/02/24 Javascript
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
[01:45]IMBATV TI4前线报道-选手到达
2014/07/07 DOTA
[03:09]2014DOTA2国际邀请赛 赛场上的美丽风景线 中国Coser也爱DOTA2
2014/07/20 DOTA
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
python递归打印某个目录的内容(实例讲解)
2017/08/30 Python
完美解决安装完tensorflow后pip无法使用的问题
2018/06/11 Python
python实现简单的单变量线性回归方法
2018/11/08 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
2019/04/16 Python
python输出电脑上所有的串口名的方法
2019/07/02 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
利用Python的turtle库绘制玫瑰教程
2019/11/23 Python
Python3获取cookie常用三种方案
2020/10/05 Python
什么是TCP/IP
2014/07/27 面试题
妇女工作先进事迹
2014/08/17 职场文书
社区党员志愿服务活动方案
2014/08/18 职场文书
小班上学期个人总结
2015/02/12 职场文书
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android
Vue ECharts实现机舱座位选择展示功能
2022/05/15 Vue.js