悟透JavaScript

所需积分/C币:14 2013-07-30 18:31:13 250KB PDF
1
收藏 收藏
举报

中文名: 悟透JavaScript 作者: 李战 资源格式: PDF 版本: 文字版 出版社: 电子工业出版社书号: 9787121074738发行时间: 2008年12月 地区: 大陆 语言: 简体中文 简介: 内容简介: 翻开此书的你,也许是JavaScript的崇拜者,正想摩拳擦掌地想尝试下学一学这一精巧的语言;也许是80后,90后的程序员或者前端架构师,正被 JavaScript魔幻般的魅力所吸引,所困惑,已经徘徊许久……那么本书正是你所需要的!通过本书,您可以独辟蹊径学习、理解和运用 JavaScript;通过本书,您可以更轻松地编写动态网页;通过本书,您
因此多了一个属性。 有那么一个概念,但没有东西。无中似有,有中还无。虽难以想象,但已经可以用代码 来处理了。 注意: 返回 但并非 ,具有值的变量也并非 是就是,非就非,没冇疑义。对就对,错就错,绝对明确。既能被代码处理,乜可以控 制代码的流程。 线性的事物,大小和次序分明,多而不乱。便于代码进行批量处理,也控制代码的迭代 和循环等。 注意: 都返回 参与任何数值计算的结构都是,而且 面向人类的理性耳物,而不是机器信号。人机信息沟通,代码据此理解人的意图等等, 都靠它了。 简单类型都不是对象, 没有将对象化的能力赋予这些简单类型。直接被赋予简单类型常量 值的标识符、变量和参数都不是一个对象。 所谓对象化,就是可以将数据和代码组织成复杂结构的能力。 中只有 类型和 类型提供了对象化的能力。 没有类 就是对象的类型。在 不管多么复杂的数据和代吗,都可以组织成 形式的 对象。 却没有类的概念! 对于许多面向对象的程序员來说,这恐怕是 中最难以理解的地方。是啊,几乎任何讲面向 对象的书中,第一个要讲的就是类的概念,这可是面向对象的支柱。这突然没有了类,我们就象一下 子没了精神支柱,感到六神无主。看来,要放下对象和类,达到对象本无根,类型亦无形的境界确实是 件不容易的事情啊。 这样,我们先来看一段 程序: 卵细胞 尾巴 腮 蚪蚪 四条腿 肺 青蛙 这段 程序一开始产生了一个生命对象 诞生时只是一个光溜溜的对象,没有任何 属性和方法。在第一次生命过程中,它有了一个身休属性 并有了一个方法,看起来是一个卵 细胞。在第二次生命过程中,它又长出了尾巴和腮,有了和属性,显然它是一个蝌蚪。在 第三次生命过程中,它的和属性消失了,但又长出了四条腿和肺,有了和属性, 从而最终变成了青蛀。如果,你的想像力丰富的话,或许还能让它变成英俊的王子,娶个美丽的公主 什么的。不过,在看完这段程序之后,请你思考一个问题 我们一定需要类吗? 还记得儿时那个小蝌蚪找妈妈的童话吗?也许就在昨天晚,你的孩子刚好是在这个美丽的童话中进入 梦乡的吧。可爱的小蝌蚪也就是在其自身类型不断演化过程中,逐渐变成了和妈妈一样的类,从而找到 」白己的妈妈。这个童话故事中蕴含的编程哲理就是:对象的类是从无到有,又小新演化,最终又消失 于无形之中的 类,的确可以帮助我们理解复杂的现实吐界,这纷乱的现实吐界也的确需要进行分类。但如果我们的 思想被类朿缚住了,炎也就变成了累。想象一下,如果一个生命对象开始旳时就被规定了囯定的类, 那么它还能演化吗?蝌蚪还能变成青虻吗?还可以给孩子们讲小蝌蚪找妈妈的故事吗? 所以, 中没有类,已化于无形,与对象融为一体。正是由于放下了类这个概念, 的对象才有了其他编程语言所没有的活力。 如果,此时你的内心湙处川始有所感悟,那么你已经逐渐J始理解 的禅机了 函数的魔力 接下来,我们再讨论一下 函数的慶力吧 的代码就只有 和形式, 就是函数的类型。也许其他编程语言还有 代码概念,但在 里只有 种形式。当我们写下一个函数的 时候,只不过是建立了一个 类型的实体而已。请看下面的程序: 这个代码运行之后可以看到 返回的是 以上的函数写法我们称之为定义式 的,如果我们将其改写成下面的变量式的,就更容易理解了: 这里明确定义了一个变量 ,它的初始值被赋予了一个 的实体。因此, 返回的也是 。其实,这两种函数的写法是等价的,除了一点细微差别,其内部实现完全相同。 也就是说,我们写的这些 数只是一个命了名的变量而已,其变量类型即为 ,变量 的值就是我们编写的函数代码体。 聪明的你或许立即会进一步的追问:既然函数只是变量,那么变量就可以被随意赋值并用到任意地方 ? 我们来看看下面的代码: 第一次调用 ,输出 第二次调用 ,将输出 这个程序运行的结果告诉我们:答案是肯定的!在第一次调用函数之后,函数变量又被赋予了新的函数 代码体,使得第二次调用该函数时,出现了不同的输出。 好了,我们又来把上面的代杩改成第一和定义式的函数形式: 这里调用 ,输出 而不是 这里调用 ,当然输出 按理说,两个签名完全相同的函数,在其他编程语言中应该是非法的。但在 中,这没错。 不过,程序运行之后却发现一个奇怪的现象:两次调用都只是最后那个函数里输出的值!显然第一个函数 没有起到任何作用。这又是为什么呢? 原来 执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的。而且,在 同一段程序的分析执行中,定义式的函数语句会被提取出來优宄执行。函数定义执行完之后,才会按顺序 执行其他语句代码。也就是说,在第一次调用之前,第一个函数语句定义的代码逻绀,已被第二 个函数定义话句覆盖了。所以,两次都调用都是执行最后一个函数逻辑了。 如果把这个 代码分成两段,例如将它们写在一个中,并用 标签将其分成 这样的两块: 这里调用输出 这里调用输出 这时,输出才是各自按顺序来的,也证明了 的确是一段段地执行的。 段代码中的定义式函数语句会优先执行,这似乎有点象静态语言的编译概念。所以,这一特征也被有 些人称为: 的预编译。 大多数情况下,我们也没有必要去纠缠这些细节问题。只要你记住一点 里的代码也是一 种数据,同样可以被任意赋值和修改的,而它的值就是代码的逻辑。只是,与一般数据不同的是,函数是 可以破调用执行的。 不过,如果 函数仅仅只有这点道行的话,这与的函数指针, 的方法指针, 的委托相比,又有啥稀奇嘛!然而 函数的神奇之处还休现在另外两个方面:一是函数 类型本身也具有对象化的能力,二是函数 与对象 超然的结合能力 奇妙的对象 先来说说函数的对象化能力。 仁何一个函数都可以为其动态地添加或去除属性,这些属性可以是简单类型,可以是对象,也可以是其 他函数。也就是说,函数具有村象的全部特征,你完全可以把函数当对象来用。其实,函数就是对象,只 不过比一般的对象多了一个括号操作符,这个操作符用来执行函数的逻辑。即,函数本身运可以被调 用,一般对象却不可以被调用,除此之外完全相同。请看下面的代码: 李白 汉家秦地月,流影照明妃。上玉关道,天涯去不归… 李战 日出汉家天,月落阴山前。女儿琵琶怨,已唱三千年 在这段代码屮, 函数被定义后,又给函数动态地增加了 属性。将 属性设为不同的作者和诗句,在调用 时就能显示出不同的结果。这个示例用一种诗情画 意的方式,让我们理解了 函数就是对象的本质,也感受到了 语言的优美 好了,以上的讲述,我们应该算理解了 类型的东西都是和 类型一样的东西,这种东 西被我们称为对象。我们的确可以这样去看待这些对象,因为它们既有属性也有方法嘛。但下面 的代码又会让我们产生新的疑惑: 个对象 对象的一个属性 对象的一个方法 要看下面: 可以将对象当数组以属性名作为下标来访问属性 可以将对象当数组以方法名作为下标来调用方法 遍历对象的所有属性和方法进行迭代化处理 同样对丁 类型的对象也是一样: 个函数 函数的一个属性 函数的一个方法 主要看下面 可以将函数当数组以属性名作为下标来访问属性 可以将函数当数组以方法名作为下标来调用方法 遍历函数的所有属性和方法进行迭代化处理 是的,对象和函数可以象数组一样,用属性名或方法名作为卜标来访问并处理。那么,它到底应该算是 数组呢,还是算对象? 我们知道,数组应该算是线性效据结构,线性数据结构一般有一定的规律,适合进行统一的批量迭代操 作等,有点像波。而对象是离散数据结枃,适合描述分散的和个性化的东西,有点像粒子。因此,我们也

...展开详情
试读 36P 悟透JavaScript
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
上传资源赚积分or赚钱
最新推荐
悟透JavaScript 14积分/C币 立即下载
1/36
悟透JavaScript第1页
悟透JavaScript第2页
悟透JavaScript第3页
悟透JavaScript第4页
悟透JavaScript第5页
悟透JavaScript第6页
悟透JavaScript第7页
悟透JavaScript第8页

试读结束, 可继续读3页

14积分/C币 立即下载 >