javascript 写类方式之一


Posted in Javascript onJuly 05, 2009

EMCA262规范中没有类(class)的概念,js的new只是让他看起来更像c++,java一点。这里说的写类,只是书写js代码风格而已。
1、构造函数方式

/** 
* Person类:定义一个人,有个属性name,和一个getName方法 
* @param {String} name 
*/ 
function Person(name) { 
this.name = name; 
this.getName = function() { 
return this.name; 
} 
}

这种风格让我们这些写过java的有点亲切在于构造一个对象需要配置一些参数,参数要赋值给类里面this。但与java的区别是js用function来定义类,参数也无需定义类型。

类写好了,我们造几个对象:

var p1 = new Person("Jack"); 
var p2 = new Person("Tom"); 
console.log(p1 instanceof Person);//true 
console.log(p2 instanceof Person);//true

控制台输出也证明了p1,p2的确是类Person的对象实例。

这种方式的优点是:可以根据参数来构造不同的对象实例 ,缺点是构造时每个实例对象都会生成getName方法版本,造成了内存的浪费 。

当然经验丰富的程序员用一个外部函数来代替类方法,达到了每个对象共享同一个方法。改写后的类如下:

//外部函数 
function getName() { 
return this.name; 
} function Person(name) { 
this.name = name; 
this.getName = getName;//注意这里 
}

呵呵,有人可能觉得代码风格有点差强人意,怎么看也没有java那么紧凑。但的确可以减少内存的消耗。
Javascript 相关文章推荐
类似CSDN图片切换效果脚本
Sep 17 Javascript
javascript Array数组对象的扩展函数代码
May 22 Javascript
利用JS延迟加载百度分享代码,提高网页速度
Jul 01 Javascript
JavaScript控制按钮可用或不可用的方法
Apr 03 Javascript
jQuery控制网页打印指定区域的方法
Apr 07 Javascript
js生成随机数的过程解析
Nov 24 Javascript
Javascript的表单验证-揭开正则表达式的面纱
Mar 18 Javascript
jQuery如何防止Ajax重复提交
Oct 14 Javascript
AngularJS创建自定义指令的方法详解
Nov 03 Javascript
JS实现基于拖拽改变物体大小的方法
Jan 23 Javascript
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
Aug 23 Javascript
node.js中fs文件系统模块的使用方法实例详解
Feb 13 Javascript
Javascript 调试利器 Firebug使用详解六
Jul 05 #Javascript
jQuery DIV弹出效果实现代码
Jul 03 #Javascript
Javascript 遍历对象中的子对象
Jul 03 #Javascript
javascript web页面刷新的方法收集
Jul 02 #Javascript
javascript 操作文件 实现方法小结
Jul 02 #Javascript
javascript new 需不需要继续使用
Jul 02 #Javascript
ExtJS GTGrid 简单用户管理
Jul 01 #Javascript
You might like
一家之言的经验之谈php+mysql扎实个人基本功
2008/03/27 PHP
php number_format() 函数通过千位分组来格式化数字的实现代码
2013/08/06 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
2013/08/10 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
Mootools 1.2教程 事件处理
2009/09/15 Javascript
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
2012/05/23 Javascript
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
jQuery使用hide方法隐藏元素自身用法实例
2015/03/30 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
Webpack 实现 AngularJS 的延迟加载
2016/03/02 Javascript
详解nodejs微信公众号开发——3.封装消息响应模块
2017/04/10 NodeJs
js学习心得_一个简单的动画库封装tween.js
2017/07/14 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
[02:26]DOTA2英雄米拉娜基础教程
2013/11/25 DOTA
python判断端口是否打开的实现代码
2013/02/10 Python
利用soaplib搭建webservice详细步骤和实例代码
2013/11/20 Python
深入理解python中的select模块
2017/04/23 Python
TensorFlow实现RNN循环神经网络
2018/02/28 Python
python读取目录下最新的文件夹方法
2018/12/24 Python
selenium获取当前页面的url、源码、title的方法
2019/06/12 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
浅谈cookie和localStorage那些事
2019/08/27 HTML / CSS
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
毕业生求职推荐信
2013/11/04 职场文书
八一建军节活动方案
2014/02/10 职场文书
工商企业管理应届生求职信
2014/05/04 职场文书
收入证明范本
2015/06/12 职场文书
九年级数学教学反思
2016/02/17 职场文书
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL