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 相关文章推荐
javascript基本语法分析说明
Jun 15 Javascript
JavaScript 学习笔记(六)
Dec 31 Javascript
JavaScript高级程序设计 事件学习笔记
Sep 10 Javascript
js根据日期判断星座的示例代码
Jan 23 Javascript
jquery提交form表单时禁止重复提交的方法
Feb 13 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
Dec 25 Javascript
纯js模仿windows系统日历
Feb 04 Javascript
详解用webpack2.0构建vue2.0超详细精简版
Apr 05 Javascript
快速搭建Node.js(Express)用户注册、登录以及授权的方法
May 09 Javascript
使用原生js编写一个简单的框选功能方法
May 13 Javascript
微信小程序简单的canvas裁剪图片功能详解
Jul 12 Javascript
JavaScript前后端JSON使用方法教程
Nov 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 定界符格式引起的错误
2011/05/24 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
mac os快速切换多个PHP版本的方法
2017/03/07 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
一段实时更新的时间代码
2006/07/07 Javascript
javascript数组的扩展实现代码集合
2008/06/01 Javascript
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
jQuery的deferred对象使用详解
2011/08/20 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
深入浅析search 搜索框的写法
2016/08/02 Javascript
Web 开发中Ajax的Session 超时处理方法
2017/01/19 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
bootstrap table单元格新增行并编辑
2017/05/19 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
jQuery实现菜单的显示和隐藏功能示例
2018/07/24 jQuery
VUE在for循环里面根据内容值动态的加入class值的方法
2018/08/12 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
layer更改皮肤的实现方法
2019/09/11 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
python类中super()和__init__()的区别
2016/10/18 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
django的settings中设置中文支持的实现
2019/04/28 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
Python连接SQLite数据库并进行增册改查操作方法详解
2020/02/18 Python
党校学习思想汇报
2014/01/06 职场文书
校园活动策划书范文
2014/01/10 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
2014年女职工工作总结
2014/11/27 职场文书
文员岗位职责范本
2015/04/16 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书
话题作文之关于呼唤
2019/11/29 职场文书