prototype中Try.these()函数的使用

简介:

在程序开发的过程中有时会遇到这样的情况:在若干个函数中,开发人员不能确定哪一个会返回正确的结果,只能依次尝试。Prototype 中 Try.these()函数为开发人员提供了一个很简便的方式来解决类似的问题。

Try.these()函数的定义

 
  1.   
  2. var Try = { 
  3.   these: function() { 
  4.     var returnValue; 
  5.     for (var i = 0, length = arguments.length; i < length; i++) { 
  6.       var lambda = arguments[i]; 
  7.       try { 
  8.         returnValue = lambda(); 
  9.         break
  10.       } catch (e) { } 
  11.     } 
  12.     return returnValue; 
  13.   } 
  14. }; 

从上面代码中可以看到,Try.these()函数的每一个参数都必须是一个无参数的JavaScript方法。在 Prototype框架中,实现 Ajax 对象的getTransport方法就用到了 Try.these() 函数,getTransport 方法的作用是返回一个 XMLHttpRequest对象,而在不同浏览器中创建XMLHttpRequest 对象的方式是不同的。通过Try.these()函数可以依次尝试各种浏览器创建XMLHttpRequest对象的方法,直到成功为止。

我们来看看Ajax对象的getTransport方法的实现代码:

 

 
  1.   
  2. var Ajax = { 
  3.   getTransport: function() { 
  4.     return Try.these( 
  5.       function() {return new XMLHttpRequest()}, 
  6.       function() {return new ActiveXObject('Msxml2.XMLHTTP')}, 
  7.       function() {return new ActiveXObject('Microsoft.XMLHTTP')} 
  8.     ) || false
  9.   }, 
  10.   activeRequestCount: 0 
  11. }; 

 


本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/410281,如需转载请自行联系原作者


相关文章
|
存储 算法 数据管理
数据结构与算法学习二零:二叉排序树(BST)、平衡二叉树(AVL)
这篇文章通过需求分析、代码实现和测试验证,详细介绍了二叉排序树的创建、遍历和删除操作,以及二叉平衡树(AVL)的自平衡特性和单旋转操作,旨在提高树结构在数据管理中的效率和性能。
321 0
数据结构与算法学习二零:二叉排序树(BST)、平衡二叉树(AVL)
|
小程序
微信小程序内部跳到外部小程序
微信小程序内部跳到外部小程序
282 0
|
芯片
《我和PIC单片机:基于PIC18》——1.2 主题芯片介绍
本节书摘来自华章计算机《我和PIC单片机:基于PIC18》一书中的第1章,第1.2节,作者 高显生,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
4274 0
|
5天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
307 116
|
20天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
7天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
505 45
Meta SAM3开源:让图像分割,听懂你的话
|
14天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
696 222