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 dialog 异步调用ashx,webservice数据的代码
Aug 03 Javascript
JQuery中的$.getJSON 使用说明
Mar 10 Javascript
防止xss和sql注入:JS特殊字符过滤正则
Apr 18 Javascript
js获取IP地址的方法小结
Jul 01 Javascript
vue-cli开发环境实现跨域请求的方法
Apr 07 Javascript
jQuery阻止事件冒泡实例分析
Jul 03 jQuery
教你使用vue-cli快速构建的小说阅读器
May 13 Javascript
vue路由插件之vue-route
Jun 13 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
Jul 05 Javascript
Nuxt.js实战和配置详解
Aug 05 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
Aug 08 jQuery
微信小程序实现菜单左右联动
May 19 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生成静态页面的简单示例
2014/04/17 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
JAVASCRIPT对象及属性
2007/02/13 Javascript
页面中js执行顺序
2009/11/09 Javascript
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
JavaScript中的return语句简单介绍
2015/12/07 Javascript
JavaScript判断DIV内容是否为空的方法
2016/01/29 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
jQuery为动态生成的select元素添加事件的方法
2016/08/29 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
基于jQuery的表单填充实例
2017/08/22 jQuery
微信小程序实现表单校验功能
2020/03/30 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
2019/08/08 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
Python基于pygame实现的弹力球效果(附源码)
2015/11/11 Python
Python机器学习之决策树算法实例详解
2017/12/06 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
python之pyqt5通过按钮改变Label的背景颜色方法
2019/06/13 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
基于Django signals 信号作用及用法详解
2020/03/28 Python
python如何代码集体右移
2020/07/20 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
2020/08/31 Python
python各种excel写入方式的速度对比
2020/11/10 Python
Python之Sklearn使用入门教程
2021/02/19 Python
高中物理教学反思
2014/02/08 职场文书
公司授权委托书范文
2014/09/21 职场文书
董事长新年致辞
2015/07/29 职场文书
面试提问mysql一张表到底能存多少数据
2022/03/13 MySQL
Golang 实现 WebSockets 之创建 WebSockets
2022/04/24 Golang