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 相关文章推荐
我遇到的参数传递中 双引号单引号嵌套问题
Feb 11 Javascript
js获取或设置当前窗口url参数的小例子
Oct 14 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
Jun 05 Javascript
JavaScipt中栈的实现方法
Feb 17 Javascript
JavaScript必知必会(五) eval 的使用
Jun 08 Javascript
详解vue数据渲染出现闪烁问题
Jun 29 Javascript
jquery拖动改变div大小
Jul 04 jQuery
微信小程序使用npm包的方法步骤
Aug 13 Javascript
ES6学习笔记之let与const用法实例分析
Jan 22 Javascript
详解Vue的ref特性的使用
Jan 24 Javascript
js this 绑定机制深入详解
Apr 30 Javascript
vue中defineProperty和Proxy的区别详解
Nov 30 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
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
php封装的smarty类完整实例
2016/10/19 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
php 根据自增id创建唯一编号类
2017/04/06 PHP
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
jQuery取id有.的值的方法
2014/05/21 Javascript
jQuery学习笔记之基础中的基础
2015/01/19 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
jQuery实现dialog设置focus焦点的方法
2015/06/10 Javascript
Jquery promise实现一张一张加载图片
2015/11/13 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
AngularJS动态加载模块和依赖的方法分析
2016/11/08 Javascript
Html5+jQuery+CSS制作相册小记录
2016/12/30 Javascript
关于微信小程序bug记录与解决方法
2018/08/15 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
JavaScript async/await原理及实例解析
2020/12/02 Javascript
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
对Python3 解析html的几种操作方式小结
2019/02/16 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
使用pth文件添加Python环境变量方式
2020/05/26 Python
Django实现内容缓存实例方法
2020/06/30 Python
Python3如何使用range函数替代xrange函数
2020/10/05 Python
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
英智兴达软件测试笔试题
2016/10/12 面试题
CSS代码检查工具stylelint的使用方法详解
2021/03/27 HTML / CSS
2014年五一促销活动方案
2014/03/09 职场文书
经济管理毕业生求职信
2014/03/15 职场文书
公司委托书格式
2014/08/01 职场文书
商标侵权律师函
2015/05/27 职场文书
尊师重教主题班会
2015/08/14 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书