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 相关文章推荐
JQuery入门——用映射方式绑定不同事件应用示例
Feb 05 Javascript
jQuery避免$符和其他JS库冲突的方法对比
Feb 20 Javascript
红米手机抢购的js代码
Mar 10 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
Apr 06 Javascript
图文详解Javascript中的上下文和作用域
Feb 15 Javascript
Vue.js实现文章评论和回复评论功能
May 30 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
Aug 16 jQuery
浅析vue深复制
Jan 29 Javascript
关于vue编译版本引入的问题的解决
Sep 17 Javascript
微信小程序云开发实现云数据库读写权限
May 17 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
Sep 17 Javascript
js实现简单点赞操作
Mar 17 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
MYSQL 小技巧 -- LAST_INSERT_ID
2009/11/24 PHP
php按百分比生成缩略图的代码分享
2014/05/10 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
2016/04/05 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
详解微信小程序Radio选中样式切换
2017/07/06 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
p5.js码绘“跳动的小正方形”的实现代码
2019/10/22 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
2020/11/03 Javascript
[02:07]2018DOTA2亚洲邀请赛主赛事第三日五佳镜头 fy极限反杀
2018/04/06 DOTA
[49:08]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python的subprocess模块总结
2014/11/07 Python
Python中标准模块importlib详解
2017/04/16 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
python pyqtgraph 保存图片到本地的实例
2020/03/14 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
python3中布局背景颜色代码分析
2020/12/01 Python
python 数据类型强制转换的总结
2021/01/25 Python
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
经理管理专业自荐信范文
2013/12/31 职场文书
单位委托函范文
2015/01/29 职场文书
建筑工程材料员岗位职责
2015/04/11 职场文书
父亲去世追悼词
2015/06/23 职场文书
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS
MySQL窗口函数的具体使用
2021/11/17 MySQL
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技
Nginx配置使用详解
2022/07/07 Servers