Prototype 1.6 边学边译 -- 工具函数 Try.these

来源:互联网 发布:linux部署多个tomcat 编辑:程序博客网 时间:2024/05/20 22:30

 

Try.these

Try.these(Function...) -> firstOKResult

接收任意数目的函数作为参数,返回第一个执行成功的函数(未抛出异常的函数)的结果。

该函数提供一种简单的对按照某种顺序排列的分组代码块进行检测的方法。被检测函数的执行顺序通常依照某个给定的特性, 根据函数和特性的相符程度由高到低进行排列(译注:类似于设计模式中的“职责链[chain of responsibility]”模式)。

在 Prototype 的 Ajax 那一节的样例中,我们希望获取一个 XMLHttpRequest 对象,然而,在 IE6 及其早期版本中,并没有提供内置的 XMLHttpRequest Javascript 对象,如果我们试图实例化该对象,将会抛出一个异常。并且,随着时间的推移,在各个版本的 IE 中,该对象独有的创建方式也随之变化,COM 接口名称也不尽相同。

Try.these 会按照一定的顺序测序多种方法,从最佳的(从理论上来说也是最普遍的)一直到最原始及最少见的方法, 返回第一个执行成功的函数的结果。

如果没有执行成功的函数,Try.these 将返回 undefined,在下面的样例中, 它会导致 getTransport 方法返回 false,并作为最终的返回结果。

getTransport: function(){return Try.these(function() { return new XMLHttpRequest() }, function() { return new ActiveXObject('Msxml2.XMLHTTP') }, function() { return new ActiveXObject('Microsoft.XMLHTTP') } ) || false; }

 

原创粉丝点击