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 parseInt与Number函数的区别
Jan 21 Javascript
jQuery点击后一组图片左右滑动的实现代码
Aug 16 Javascript
jQuery级联操作绑定事件实例
Sep 02 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
Aug 31 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
Mar 09 Javascript
AngularJS入门教程之路由与多视图详解
Aug 19 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
May 29 Javascript
vue移动端监听滚动条高度的实现方法
Sep 03 Javascript
使用jQuery如何写一个含验证码的登录界面
May 13 jQuery
Vue实战教程之仿肯德基宅急送App
Jul 19 Javascript
javascript中的相等操作符(==与===区别)
Dec 21 Javascript
js验证密码强度解析
Mar 18 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 简单日历实现代码
2009/10/28 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
使用jQuery获取data-的自定义属性
2015/11/10 Javascript
BootStrap和jQuery相结合实现可编辑表格
2016/04/21 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
2016/09/23 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
HTML的select控件美化
2017/03/27 Javascript
js判断密码强度的方法
2020/03/18 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
玩转python爬虫之URLError异常处理
2016/02/17 Python
在python的类中动态添加属性与生成对象
2016/09/17 Python
pygame加载中文名mp3文件出现error
2017/03/31 Python
python验证码识别的示例代码
2017/09/21 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
用Python实现职工信息管理系统
2020/12/30 Python
CSS3标注引用的出处和来源的方法
2020/02/25 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
中学生自我评价范文
2014/02/08 职场文书
《凡卡》教学反思
2014/04/09 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
优秀安全员事迹材料
2014/05/11 职场文书
公司年底活动方案
2014/08/17 职场文书
工地例会施工汇报材料
2014/08/22 职场文书
大学生自我评价200字(4篇)
2014/09/17 职场文书
公安派出所所长四风问题个人对照检查材料
2014/10/04 职场文书
2014年保管员工作总结
2014/11/18 职场文书
Nginx配置80端口访问8080及项目名地址方法解析
2021/03/31 Servers
Html5生成验证码的示例代码
2021/05/10 Javascript
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android
Moment的feature导致线上bug解决分析
2022/09/23 Javascript