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 相关文章推荐
通过ifame指向的页面高度调整iframe的高度
Oct 05 Javascript
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
Feb 23 Javascript
用js遍历 table的脚本
Jul 23 Javascript
jQuery插件 tabBox实现代码
Feb 09 Javascript
js动态为代码着色显示行号
May 29 Javascript
jquery.Ajax()方法调用Asp.Net后台的方法解析
Feb 13 Javascript
javascript的创建多行字符串的7种方法
Apr 29 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
Sep 19 Javascript
node.js中express中间件body-parser的介绍与用法详解
May 23 Javascript
jQuery动画_动力节点节点Java学院整理
Jul 04 jQuery
ES6 class类链式继承,实例化及react super(props)原理详解
Feb 15 Javascript
vue-admin-template配置快捷导航的代码(标签导航栏)
Sep 04 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
Zend Framework实现多服务器共享SESSION数据的方法
2016/03/22 PHP
Zend Framework动作控制器用法示例
2016/12/09 PHP
PHP PDOStatement::setAttribute讲解
2019/02/01 PHP
JavaScript使用prototype定义对象类型
2007/02/07 Javascript
页面版文本框智能提示JS代码
2009/11/20 Javascript
基于node.js的快速开发透明代理
2010/12/25 Javascript
JavaScript调用ajax获取文本文件内容实现代码
2014/03/28 Javascript
Javascript遍历Html Table示例(包括内容和属性值)
2014/07/08 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
AngularJS入门教程之Helloworld示例
2016/12/25 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
Angular事件之不同组件间传递数据的方法
2018/11/15 Javascript
node中使用es6/7/8(支持性与性能)
2019/03/28 Javascript
详解Vue前端生产环境发布配置实战篇
2019/05/07 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
2019/09/10 Javascript
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
Python使用中文正则表达式匹配指定中文字符串的方法示例
2017/01/20 Python
python中defaultdict的用法详解
2017/06/07 Python
Python模块相关知识点小结
2020/03/09 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
2020/05/19 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
英国可持续奢侈品包包品牌:Elvis & Kresse
2018/08/05 全球购物
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
大学生个人简历中的自我评价
2013/12/27 职场文书
2014小学语文教师个人工作总结
2014/12/03 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
一文读懂navicat for mysql基础知识
2021/05/31 MySQL
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers