- 浏览: 452707 次
- 性别:
- 来自: 西安
最新评论
-
进退取舍:
谢谢,这个用上了!!
Java 一个线程池的示例 -
pb_water:
感谢楼主,打算买楼主的书,支持一下,楼主功德无量
JavaScript内核系列第0版整理稿下载 -
lancezhcj:
有图会直观的多呢,再摸索摸索
有限自动机与建模 -
hsmsyy:
这里应该是原创了吧,楼主我觉得闭包的作用:实现面向对象。有待商 ...
JavaScript内核系列 第7章 闭包 -
wll52:
在应用退出之前,需要释放连接 con.disconnect() ...
使用smack与GTalk通信
文章列表
第九章 函数式的Javascript
要说JavaScript和其他较为常用的语言最大的不同是什么,那无疑就是JavaScript是函数式的语言,函数式语言的特点如下:
函数为第一等的元素,即人们常说的一等公民。就是说,在函数式编程中,函数是不依赖于其他对象而独立存在的(对比与Java,函数必须依赖对象,方法是对象的方法)。
函数可以保持自己内部的数据,函数的运算对外部无副作用(修改了外部的全局变量的状态等),关于函数可以保持自己内部的数据这一特性,称之为闭包。我们可以来看一个简单的例子:
var outter = function(){
var ...
接上篇:JavaScript内核系列 第8章 面向对象的JavaScript(上)
8.4实例:事件分发器
这一节,我们通过学习一个面向对象的实例来对JavaScript的面向对象进行更深入的理解,这个例子不能太复杂,涉及到的内容也不能仅仅为继承,多态等概念,如果那样,会失去阅读的乐趣,最好是在实例中穿插一些讲解,则可以得到最好的效果。
本节要分析的实例为一个事件分发器(Event Dispatcher),本身来自于一个实际项目,但同时又比较小巧,我对其代码做了部分修改,去掉了一些业务相关的部分。
事件分发器通常是跟UI联系在一起的,UI中有多个组件,它们之间经常需要互相通信 ...
第八章
面向对象的
Javascript
面向对象编程思想在提出之后,很快就流行起来了,它将开发人员从冗长,繁复,难以调试的过程式程序中解放了出来,过程式语
言如
C
,代码的形式往往如此:
Component comp;
init_component(& comp, props);
而面向对象的语言如
Java
,则会是这种形式:
Component comp;
comp.init(props);
可以看出,方法是对象的方法,对象是方法的对象,这样的代码形式更接近人的思维方式,因 ...
第七章 闭包
闭包向来给包括JavaScript程序员在内的程序员以神秘,高深的感觉,事实上,闭包的概念在函数式编程语言中算不上是难以理解的知识。如果对作用域,函数为独立的对象这样的基本概念理解较好的话,理解闭包的概念并在实际的编程实践中应用则颇有水到渠成之感。
在DOM的事件处理方面,大多数程序员甚至自己已经在使用闭包了而不自知,在这种情况下,对于浏览器中内嵌的JavaScript引擎的bug可能造成内存泄漏这一问题姑且不论,就是程序员自己调试也常常会一头雾水。
用简单的语句来描述JavaScript中的闭包的概念:由于JavaScript中,函数是对象,对象是属性的集合,而属性 ...
第六章 正则表达式
正则表达式是对字符串的结构进行的形式化描述,非常简洁优美,而且功能十分强大。很多的语言都不同程度的支持正则表达式,而在很多的文本编辑器如Emacs,vim,UE中,都支持正则表达式来进行字符串的搜索替换工作。UNIX下的很多命令行程序,如awk,grep,find更是对正则表达式有良好的支持。
JavaScript同样也对正则表达式有很好的支持,RegExp是JavaScript中的内置“类”,通过使用RegExp,用户可以自己定义模式来对字符串进行匹配。而JavaScript中的String对象的replace方法也支持使用正则表达式对串进行匹配,一旦匹配 ...
第五章 数组
JavaScript的数组也是一个比较有意思的主题,虽然名为数组(Array),但是根据数组对象上的方法来看,更像是将很多东西混在在一起的结果。而传统的程序设计语言如C/Java中,数组内的元素需要具有相同的数据类型,而作为弱类型的JavaScript,则没有这个限制,事实上,JavaScript的同一个数组中,可以有各种完全不同类型的元素。
方法
描述
concat()
连接两个或更多的数组,并返回结果。
join()
前言
去年9月份开发的那个小工具sTodo,只是做到了能用,但是还很不好用,比如没有定时的提醒功能,整个框架比较死板,不方便扩展,虽然设计之初就考虑要使用脚本语言进行脚本化,提供更强的定制能力,但是一直因为工作上事情太多,没有经历投入而悬停。
不明真相的可以参看以前的两篇文章:
Swing小应用(Todo-List)之一
Swing小应用(Todo-List)之二
sTodo的现状
sTodo内部用了一套任务管理模块,可以做到定时提醒的功能,效果还是不错的:
虽然UI还很原始,但是基本功能都已经实现,剩下就是美化UI了。另外,插件系统也基本可用,后台使用JavaSc ...
JavaScript内核系列的专栏已经申请开通了,目前已经发表了该系列的前4篇,
第一章:前言及概述
第二章:基本概念
第三章:对象及JSON
第四章:函数
第五章:数组
第六章:正则表达式
第七章:闭包
第八章:面向对象的JavaScript(上)
第八章:面向对象的JavaScript(下)
2010-04-27 更新两章[数组],/正则表达式/。
2010-05-04 更新闭包一章
2010-05-06 更新两章,面向对象的JavaScript
专栏地址为:
http://www.iteye.com/wiki/javascript-core
...
第四章 函数
函数,在C语言之类的过程式语言中,是顶级的实体,而在Java/C++之类的面向对象的语言中,则被对象包装起来,一般称为对象的方法。而在JavaScript中,函数本身与其他任何的内置对象在低位上是没有任何区别的,也就是说,函数本身也是对象。
总的来说,函数在JavaScript中可以:
被赋值给一个变量
被赋值为对象的属性
作为参数被传入别的函数
作为函数的结果被返回
用字面量来创建
4.1函数对象
4.1.1 创建函数
创建JavaScript函数的一种不长用的方式(几乎没有人用)是通过new操作符来作用于Func ...
第三章 对象与JSON
JavaScript对象与传统的面向对象中的对象几乎没有相似之处,传统的面向对象语言中,创建一个对象必须先有对象的模板:类,类中定义了对象的属性和操作这些属性的方法。通过实例化来构筑一个对象,然后使用对象间的协作来完成一项功能,通过功能的集合来完成整个工程。而Javascript中是没有类的概念的,借助JavaScript的动态性,我们完全可以创建一个空的对象(而不是类),通过像对象动态的添加属性来完善对象的功能。
JSON是JavaScript中对象的字面量,是对象的表示方法,通过使用JSON,可以减少中间变量,使代码的结构更加清晰,也更加直观。使用JSON ...
第二章 基本概念
本章将聚焦于JavaScript中的基本概念,这些概念与传统语言有比较大的不同,因此单独列出一章来做专门描述,理解本章的概念对书中后续章节的概念,代码的行为等会有很大的帮助,读者不妨花比较大的 ...
前言
从2006年第一次接触JavaScript至今,算来也有四年时间了。上大学的时候,有一段时间沉迷于函数式编程,而那时候对JavaScript的理解仅仅局限在这是用来做网页的一种脚本,那些很恶心的弹出窗口和不断在页面上漂浮的黄色广告就是用JavaScript做出来的。工作之后,由于我们产品本身就是基于WEB展现的,而这个时候Ajax已经复兴数年了,但是于我,则只有“Ajax可以实现页面的局部刷新”这样一个概念。在实际的应用中,我才有机会面对真正的JavaScript,早期关于函数式编程的概念开始在我的记忆力复苏,而真正将JavaScript比较熟练的应用在产品的开发中,那已经是09年年末了 ...
今天为2009年12月20日,特将自己2009年一年中之所学总结一下,一来对自己的经历回顾一下,二来考虑下来年的发展方向。
技术性知识
统计了一下,在javaeye发帖30篇,其中内容涉及方面颇为杂乱,有关于python的,有关于javascript的,vim, C, java等方面,总结如下:
学会了python的网络,图像处理等方面的技术
学会了jQuery的基本应用,并在项目中大量应用
学会了java中的Swing开发,并开发出一个小工具sTodo
学习并实践了vim的一些技巧
对java中的lex&yacc--javacc,并开发了几个小工具
用 ...
引言
前一段时间用swing开发了sTodo(http://code.google.com/p/stodo/
),对swing开发GUI的基本流程算是熟悉了,所以也常用swing来写些小东西。在实际的开发或者学习中,经常遇到这样的场景:想要执行一段javascript脚本,验证一些想法,这 ...
引言
Java中的匿名类是比较有意思的一种编程方式,在swing中关于监听器的注册时,经常可见到这样的代码:
iexit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
int y = JOptionPane.showConfirmDialog(
null,
"Confirm exit",
"Confirm Exit Dialog",
JOption ...