- 9
- 0
- 约1.59万字
- 约 5页
- 2015-08-29 发布于湖北
- 举报
基于闭包的JavaScript面向对象编程框架.pdf
第 39卷 第2期 江汉大学学报 (自然科学版) V01.39 NO.2
2011年 6月 J.JianghanUniv.(Nat.Sci.Ed.) Jun.2O11
基于闭包的JavaScript面向对象编程框架
李 轶
(江汉大学 数学与计算机科学学院,湖北 武汉 430056)
摘 要 :Web技术 的发展促使开发者对JavaScript语言提 出了更 多要求.为提高 Web应用 的开发效率及质
量 ,构建 了一个基于JavaScript闭包的面向对象编程框架.通过 闭包的运用,实现 了基于类面 向对象编程封装、
继承及多态的特征 .在此基础上 ,给 出了框架使用示例.
关键词 :闭包;类 ;面向对象
中图分类号 :TP312 文献标志码 :A 文章编号:1673—0143(2011)02-0056—05
语言,然而它却具有许多不为人熟知 的元编程
0 引言
(MetaProgramming)特性 。例如,可以通过定义
Web技术的不断发展 ,使得 JavaScript语言得 具有词法作用域 的嵌套函数来定义闭包.
到越来越广泛的应用.各种 Web应用开发 的不断 functionmakeCounter(){
增多,促使开发者对 JavaScript语言本身提 出了更 varcount 0:
多要求.在充分利用其动态编程 (Dynamicprogram— returnfunction(){
ming)优势的同时,也希望其具有基于类 的语言特 return count+ + :
征.并通过框架 的使用 ,简化开发 的难度 ,提高开 );
发效率.尽管 JavaScript是一种无类 的面向对象语 )
言,但却可以利用其函数式语言的闭包特性 ,构 函数 makeCounter返 回一个 匿名计数器 函数 ,
造和模拟类的机制.并在此基础上形成一套框架 , 该函数引用了局部变量 count,因而构成 了一个 闭
为开发者的使用提供便利. 包.由于词语域的限制,外部代码不能访问局部变
量 count,但 由于 闭包 的存 在 ,该 变量在 函数
1 闭包
makeCounter调用完成后不会被撤销 ,而是继续随
闭包 (Closure)又称为词法 闭包 (LexicalClo— 同闭包 的存在而存在.
sure).从形式上看 ,它是指 引用 了被绑定于其词 对该匿名函数的连续调用,将使得计数器值
法环境 (1exicalenvironment)的 自由变量 的第一型 不断加 1,例如
函数 (first—classfunction) .而本质上,闭包是 由 varcounter makeCounter();
函数及其相关引用环境组合而成 的实体. counter();//返回 1
闭包最主要 的特征就在于 ,由于词法环境 的 counter();//返 回2
限制 ,外部代码不能访问被闭包引用的 自由变量 ;
2 面向对象编程框架
又由于闭包的存在 ,这些 自由变量将获得与闭包
相同的生存期,而不会被系统撤销 .此外 ,还可 2.1 框架基本功能
通过定义同一词法环境下的多个 闭包 ,实现对 自 作
原创力文档

文档评论(0)