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 相关文章推荐
非阻塞动态加载javascript广告实现代码
Nov 17 Javascript
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
May 23 Javascript
js菜单点击显示或隐藏效果的简单实例
Jan 13 Javascript
jQuery UI设置固定日期选择特效代码分享
Aug 27 Javascript
12个超实用的JQuery代码片段
Nov 02 Javascript
jQuery表格插件datatables用法详解
Nov 23 Javascript
Bootstrap表单布局样式代码
May 31 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
Sep 09 Javascript
PHP抓取HTTPS内容和错误处理的方法
Sep 30 Javascript
JavaScript中localStorage对象存储方式实例分析
Jan 12 Javascript
vue+element加入签名效果(移动端可用)
Jun 17 Javascript
基于vue-cli3创建libs库的实现方法
Dec 04 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的类树(支持无限分类)
2006/10/09 PHP
介绍几个array库的新函数 php
2006/12/29 PHP
php文件操作实例代码
2012/05/10 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
jquery 定位input元素的几种方法小结
2013/07/28 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
JavaScript中数据结构与算法(一):栈
2015/06/19 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
JS实现微信里判断页面是否被分享成功的方法
2017/06/06 Javascript
利用JavaScript如何查询某个值是否数组内
2017/07/30 Javascript
JavaScript定时器setTimeout()和setInterval()详解
2017/08/18 Javascript
vue 路由页面之间实现用手指进行滑动的方法
2018/02/23 Javascript
JavaScript动态创建二维数组的方法示例
2019/02/01 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
绘制微信小程序验证码功能的实例代码
2021/01/05 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
python实现八大排序算法(1)
2017/09/14 Python
python实现图片转字符小工具
2019/04/30 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
pytorch::Dataloader中的迭代器和生成器应用详解
2020/01/03 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
什么是Rollback Segment
2013/04/22 面试题
私有程序集与共享程序集有什么区别
2013/04/05 面试题
高二政治教学反思
2014/02/01 职场文书
建议书的格式
2014/05/12 职场文书
工厂标语大全
2014/10/06 职场文书
党员个人整改措施
2014/10/24 职场文书
销售经理岗位职责
2015/01/31 职场文书
高考作弊检讨书1500字
2015/02/16 职场文书
婚庆公司开业主持词
2015/06/30 职场文书
应用最多的公文《通知》如何写?
2019/04/02 职场文书
求职信:求职应该注意的问题
2019/04/24 职场文书
nginx优化的六点方法
2021/03/31 Servers
Python如何加载模型并查看网络
2022/07/15 Python