多态性
JavaScript是一种非类型化的语言-在此,一切都是对象。因此,如果有两个类A和B,它们都定义一个foo(),那么JavaScript将允许在A和B的实例上多态地调用foo()-即使不存在层次关系(虽然是可实现的)。从这一角度来看,JavaScript提供一个比Java更宽的多态性。这种灵活性,象往常一样,也要付出代价。在这种情况中,代价是把类型检查工作代理到应用程序代码。具体地说,如果需要检查一个参考确实指向一个所希望的基类,那么这可以通过instanceof操作符来实现。
另一方面,JavaScript并不检查函数调用中的参数-这可以防止用一样的命名和不同的参数来定义多态函数(并且让编译器选择正确的签名)。代之的是,JavaScript提供了一个Java 5风格的函数范围内的argument对象-它允许你根据参数的类型和数量的不同而实现一个不同的行为。
二、 示例展示
本文所附源码列表1实现了一个计算器-它可以计算以一个逆向波兰式标志的表达式。该示例展示了本文中所介绍的主要技术并且也介绍了一些独特的JavaScript特性的用法,例如在一个动态函数调用中以一个数组元素的方式访问对象属性。
为了使列表1工作,我们需要另外准备一些代码-它们用于实例化该计算器对象并且调用evaluate方法:var e = new ArithmeticCalcuator([2,2,5,"add","mul"]);alert(e.evaluate());
三、 AJAX组件授权
所有的AJAX组件授权方案在今天被逻辑地分成两组。具体地说,第一组用于与基于HTML的UI定义的无缝集成。第二组把HTML当作一个UI定义语言以支持某种XML。在本文中,我们从第一组中来展示一种方法-虽然它存在于浏览器之中却是类似于JSP标签。这些浏览器特定的组件授权扩展在IE情形下称作元素行为,而在最近版本的Firefox,Mozilla和Netscape 8情形下称作可扩展的绑定。
四、 定制标签
Inte.net Explorer,从版本5.5开始,支持定制的客户端HTML元素的JavaScript授权。不象JSP标签,这些对象并没有在服务器端被预处理到HTML中。而是,它们成为一标准HTML对象模型的合法扩展,并且包括构造控件在内的一切事情,都是动态地发生在客户端的。同样,基于Gecko-引擎的浏览器能够用一个可重用功能动态地装饰任何现有的HTML元素。
因此,我们有可能用具有HTML语法的方法、事件和属性来构建一个具有丰富的UI组件的库。这样的组件可以被自由地混合于标准HTML中。内部地,这些组件将会与应用程序服务器进行通讯-以AJAX风格。换句话说,你有可能(并且相对简单地)构建自己的AJAX对象模型。
这种IE风味的方法被称为HTC或HTML组件;其Gecko版本被称为XBL-可扩展的绑定语言(eXtensible Bindings Language)。为了实现本文目的,我们集中于讨论IE。
文章来源于领测软件测试网 https://www.ltesting.net/