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 相关文章推荐
基础的prototype.js常用函数及其用法
Mar 10 Javascript
jquery.ui.progressbar 中文文档
Nov 26 Javascript
新老版本juqery获取radio对象的方法
Mar 01 Javascript
html的DOM中document对象anchors集合用法实例
Jan 21 Javascript
javascript实现倒计时跳转页面
Jan 17 Javascript
javascript 广告移动特效的实现代码
Jun 25 Javascript
点击页面任何位置隐藏div的实现方法
Sep 05 Javascript
ES6中Generator与异步操作实例分析
Mar 31 Javascript
Vue CLI3 开启gzip压缩文件的方式
Sep 30 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
Nov 14 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
Apr 10 Javascript
angular异步验证防抖踩坑实录
Dec 01 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
在数据量大(超过10万)的情况下
2007/01/15 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
php快递单号查询接口使用示例
2014/05/05 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
PHP定时任务获取微信access_token的方法
2016/10/10 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
对联广告js flash激活
2006/10/19 Javascript
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
子页向父页传值示例
2013/11/27 Javascript
Javascript全局变量var与不var的区别深入解析
2013/12/09 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
js案例之鼠标跟随jquery版(实例讲解)
2017/07/21 jQuery
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
在 webpack 中使用 ECharts的实例详解
2018/02/05 Javascript
vue this.reload 方法 配置
2018/09/12 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
[45:59]EG vs OG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
在Python编程过程中用单元测试法调试代码的介绍
2015/04/02 Python
简介Python设计模式中的代理模式与模板方法模式编程
2016/02/02 Python
详解python 注释、变量、类型
2018/08/10 Python
python实现机器学习之元线性回归
2018/09/06 Python
pycharm 解除默认unittest模式的方法
2018/11/30 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
护士实习生自我鉴定范文
2013/12/10 职场文书
创业计划书怎样才能打动风投
2014/01/01 职场文书
简历的个人自我评价范文
2014/01/03 职场文书
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis