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

本文介绍了Prototype库中的Try.these函数,该函数用于按顺序尝试执行多个函数,直到找到第一个成功执行(不抛出异常)的函数并返回其结果。在示例中展示了如何使用Try.these来跨浏览器兼容地创建XMLHttpRequest对象。

 

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; }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值