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 相关文章推荐
用于判断用户注册时,密码强度的JS代码
Jan 01 Javascript
JS中的异常处理方法分享
Dec 22 Javascript
网站内容禁止复制和粘贴、另存为的js代码
Feb 26 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
Apr 27 Javascript
微信内置浏览器私有接口WeixinJSBridge介绍
May 25 Javascript
Javascript编程之继承实例汇总
Nov 28 Javascript
JS表单数据验证的正则表达式(常用)
Feb 18 Javascript
d3.js实现立体柱图的方法详解
Apr 28 Javascript
three.js加载obj模型的实例代码
Nov 10 Javascript
原生JavaScript实现remove()和recover()功能示例
Jul 24 Javascript
Node.js实现简单的爬取的示例代码
Jun 25 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
Aug 20 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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
一台收音机,让一家人都笑逐颜开!
2020/08/21 无线电
php checkbox 取值详细说明
2010/08/19 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
PHP实现的浏览器检查类
2016/04/11 PHP
PHP实现的网站目录扫描索引工具
2016/09/08 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
javascript对talbe进行动态添加、删除、验证实现代码
2012/03/29 Javascript
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
JavaScript实现获得所有兄弟节点的方法
2015/07/23 Javascript
Javascript中的arguments对象
2016/06/20 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
Bootstrap基本组件学习笔记之分页(12)
2016/12/08 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
vue远程加载sfc组件思路详解
2019/12/25 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
2017/09/26 Python
python最长回文串算法
2018/06/04 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
Pandas之Fillna填充缺失数据的方法
2019/06/25 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
简单了解Python变量作用域正确使用方法
2020/06/12 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
婚前财产公证书
2014/04/10 职场文书
护理医院见习报告
2014/11/03 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书
JavaScript 去重和重复次数统计
2021/03/31 Javascript
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js