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显示时间 js显示最后修改时间
Jan 02 Javascript
JQuery切换显示的效果实例代码
Feb 27 Javascript
JS 获取滚动条高度示例代码
Oct 24 Javascript
javascript使用onclick事件改变选中行的颜色
Dec 30 Javascript
浅谈js的setInterval事件
Dec 05 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
Mar 26 Javascript
Jquery网页内滑动缓冲导航的实现代码
Apr 05 Javascript
ReactNative页面跳转实例代码
Sep 27 Javascript
半个小时学json(json传递示例)
Dec 25 Javascript
js中的数组对象排序分析
Dec 11 Javascript
基于ssm框架实现layui分页效果
Jul 27 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
Nov 27 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)四
2006/10/09 PHP
php强制文件下载而非在浏览器打开的自定义函数分享
2014/05/08 PHP
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
没有document.getElementByName方法
2013/08/19 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
JavaScript从数组中删除指定值元素的方法
2015/03/18 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
谈谈JavaScript中的几种借用方法
2016/08/09 Javascript
Vue 2.0 服务端渲染入门介绍
2017/03/29 Javascript
vue中各组件之间传递数据的方法示例
2017/07/27 Javascript
VUE 实现element upload上传图片到阿里云
2020/08/12 Javascript
python获得文件创建时间和修改时间的方法
2015/06/30 Python
Python文件与文件夹常见基本操作总结
2016/09/19 Python
python 数据清洗之数据合并、转换、过滤、排序
2017/02/12 Python
Python连接SQLServer2000的方法详解
2017/04/19 Python
Python实现购物程序思路及代码
2017/07/24 Python
matplotlib实现热成像图colorbar和极坐标图的方法
2018/12/13 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
wxPython实现带颜色的进度条
2019/11/19 Python
解决Pycharm 导入其他文件夹源码的2种方法
2020/02/12 Python
python argparse传入布尔参数false不生效的解决
2020/04/20 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
HTML5超炫酷粒子效果的进度条的实现示例
2019/08/23 HTML / CSS
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
毕业生求职简历的自我评价
2013/10/07 职场文书
导游实习生自荐书
2014/01/28 职场文书
行政专员的岗位职责
2014/03/10 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
政协工作总结2015
2015/05/20 职场文书
运输公司工作总结
2015/08/11 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL
零基础学java之循环语句的使用
2022/04/10 Java/Android