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 相关文章推荐
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
Apr 14 Javascript
jQuery创建平滑的页面滚动(顶部或底部)
Feb 26 Javascript
javascript框架设计之种子模块
Jun 23 Javascript
javascript获取select值的方法分析
Jul 02 Javascript
Bootstrap每天必学之前端开发框架
Nov 19 Javascript
AngularJS上拉加载问题解决方法
May 23 Javascript
Javascript vue.js表格分页,ajax异步加载数据
Oct 24 Javascript
javascript ES6中箭头函数注意细节小结
Feb 17 Javascript
用Vue.extend构建消息提示组件的方法实例
Aug 08 Javascript
Vue精简版风格概述
Jan 30 Javascript
详解React中setState回调函数
Jun 14 Javascript
详解vue 路由跳转四种方式 (带参数)
Apr 28 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
解析csv数据导入mysql的方法
2013/07/01 PHP
php使用google地图应用实例
2014/12/31 PHP
php实现的农历算法实例
2015/08/11 PHP
php获取用户真实IP和防刷机制的实例代码
2018/11/28 PHP
javascript中的对象创建 实例附注释
2011/02/08 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
2015/11/19 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
基于jquery编写分页插件
2016/03/07 Javascript
基于JavaScript实现在新的tab页打开url
2016/08/04 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
JS实现手写parseInt的方法示例
2017/09/24 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
javacript replace 正则取字符串中的值并替换【推荐】
2018/09/13 Javascript
Vue刷新修改页面中数据的方法
2018/09/16 Javascript
js实现动态添加上传文件页面
2018/10/22 Javascript
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
vue实现登录页面的验证码以及验证过程解析(面向新手)
2019/08/02 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
在Python的Django框架中实现Hacker News的一些功能
2015/04/17 Python
python3学生名片管理v2.0版
2018/11/29 Python
Python基础学习之时间转换函数用法详解
2019/06/18 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
Python 变量的创建过程详解
2019/09/02 Python
python 实现屏幕录制示例
2019/12/23 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
python爬取抖音视频的实例分析
2021/01/19 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
护士个人自我鉴定
2014/03/24 职场文书
产品包装策划方案
2014/05/18 职场文书
六一亲子活动感想
2015/08/07 职场文书