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脚本控制asp.net下treeview的NodeCheck的实现代码
Mar 02 Javascript
基于JQuery.timer插件实现一个计时器
Apr 25 Javascript
javascript new后的constructor属性
Aug 05 Javascript
script标签属性type与language使用选择
Dec 02 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
Mar 04 Javascript
微信小程序 页面跳转传参详解
Oct 28 Javascript
前端分页功能的实现以及原理(jQuery)
Jan 22 Javascript
详解微信小程序设置底部导航栏目方法
Jun 29 Javascript
jQuery plugin animsition使用小结
Sep 14 jQuery
JS中原始值和引用值的储存方式示例详解
Mar 23 Javascript
vue.js 实现输入框动态添加功能
Jun 25 Javascript
微信小程序支付PHP代码
Aug 23 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动态生成JavaScript代码
2009/03/09 PHP
c#中的实现php中的preg_replace
2009/12/21 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
使用Javascript和DOM Interfaces来处理HTML
2006/10/09 Javascript
jquery之empty()与remove()区别说明
2010/09/10 Javascript
js实现在文本框光标处添加字符的方法介绍
2012/11/24 Javascript
js操作iframe的一些方法介绍
2013/06/25 Javascript
javascript里使用php代码实例
2014/12/13 Javascript
Json解析的方法小结
2016/06/22 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
2016/08/05 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
ie下js不执行的几种可能
2017/02/28 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
关于定制FileField中的上传文件名称问题
2017/08/22 Javascript
详解如何在Vue里建立长按指令
2018/08/20 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
2019/12/21 Javascript
Vue+Node实现的商城用户管理功能示例
2019/12/23 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
[45:15]Optic vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python读写及备份oracle数据库操作示例
2018/05/17 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
使用Pycharm分段执行代码
2020/04/15 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
CSS3实现网站商品展示效果图
2020/01/18 HTML / CSS
HTML5 History API 实现无刷新跳转
2016/01/11 HTML / CSS
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
Vilebrequin美国官方网上商店:法国豪华泳装品牌
2020/02/22 全球购物
linux面试题参考答案(7)
2014/07/24 面试题
出国导师推荐信
2015/03/25 职场文书
公司员工离职感言
2015/08/03 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
银行求职信怎么写
2019/06/20 职场文书
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android