快速业务通道

跨越边界: JavaScript语言特性 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
gt;Swap</button> </body>

这个例子解决了一个常见问题:如何将更改中的行为附加到用户接口事件?通过高阶函数,这很容易 做到。temperature 高阶函数返回 current 的值,而 current 又可以有 hot 或 cold 函数。看一下这 个有些陈旧的函数调用:temperature()()。第一组括号用于调用 temperature 函数。第二组括号调用由 temperature 返回 的函数。图 4 显示了输出:

图 4. 高阶函数

跨越边界: JavaScript语言特性 - 编程入门网

高阶函数是函数式编程的基础,对比面向对象编程,函数式编程代表了更高级别的抽象。但 JavaScript 的实力并不仅限于高阶函数。JavaScript 的动态类型就极为适合 UI 开发。

跨越边界: JavaScript语言特性(4)

时间:2011-07-22 IBM Bruce Tate

动态类型

通过静态类型,编译器可以检查参数和变量的值或针对一个给定操作所允许的返回值。其优势是编译 器可以做额外的错误检查。而且静态类型还可以为诸如 IDE 这样的工具提供更多信息,带来其他一些特 性,比如更好的代码完成功能。但静态类型也存在着如下一些劣势:

必须提前声明意图,这常常会导致灵活性降低。例如,更改一个 Java 类就会更改类的类型,因而必 须重新编译。对比之下,Ruby 允许开放的类,但更改一个 Java 类还是会更改类的类型。

要实现相同的功能,必须输入更多的代码。例如,必须用参数形式包括进类型信息,必须用函数形式 返回值和所有变量的类型。另外,还必须声明所有变量并显式地转化类型。

静态语言的编译-部署周期要比动态语言的部署周期长,尽管一些工具可被用来在某种程度上缓解这一 问题。

静态类型更适合用于构建中间件或操作系统的语言中。UI 开发常常需要更高的效率和灵活性,所以更 适合采用动态类型。我深知这种做法存在危险。相信使用过 JavaScript 的 Web 开发人员都曾经为编译 器本应检测到的错误类型的变量而绞尽脑汁。但它所带来的优势同样不可否认。下面将举例加以说明。

首先,考虑一个对象的情况。在清单 5 中,创建一个新对象,并访问一个不存在的属性,名为 color :

清单 5. 引入一个属性

<script type=''text/javascript''>   blank_object = new Object();   blank_object.color = ''blue''   alert(''The color is '' + blank_object.color) </script>

当加载并执行此应用程序时,会得到如图 5 所示的结果:

图 5. 引入属性

跨越边界: JavaScript语言特性 - 编程入门网

JavaScript 并不会报告 blue 属性不存在的错误。静态类型的拥护者大都会被本例所吓倒,因为本例 中的错误被很好地隐匿了。虽然这种做法多少会让您感觉有些不正当,但您也不能否认它巨大的诱惑力。 您可以很快引入属性。如果将本例和本文之前的例子结合起来,还可以引入行为。记住,变量可以保存函 数!所以,基于动态类型和高阶函数,您可以在任何时候向类中引入任意的行为。

可以轻松地重写 清单 5,使其如清单 6 所示:

清单 6. 引入行为

<script type=''text/javascript''>   blank_object = new Object();   blank_object.color = function() { return ''blue''}   alert(''The color is '' + blank_object.color()) </script>

从上例可以看出,在 JavaScript 的不同概念之间可以如此轻松地来回变换,其含义上的变化很大 —— 比如,是引入行为还是引入数据 —— 但语法上的变化却很小。该语言很好 的延展性是它的一种优势,但同样也是其缺点所在。实际上,该语言本身的对象模型就是 JavaScript 延 展程度的一种体现。

跨越边界: JavaScript语言特性(5)

时间:2011-07-22 IBM Bruce Tate

对象模型

到目前为止,您应该对 JavaScript 有一个正确的评价了,它绝非只如一个玩具那么简单。事实上, 很多人都使用过其对象模

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号