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,如需转载请自行联系原作者


相关文章
|
2月前
|
JavaScript 前端开发
prototype(原型对象)
原型对象(prototype)是 JavaScript 中一种特殊的对象,它用于实现对象之间的属性和方法共享。在 JavaScript 中,所有的对象都有一个原型(除了全局对象,如 Math、Date 等),当我们试图访问一个对象的属性或方法时,如果该对象本身没有这个属性或方法,Jav
10 1
|
7月前
|
JavaScript 前端开发
原型链中:为什么Function.proto==Function.prototype?
原型链中:为什么Function.proto==Function.prototype?
|
JavaScript 前端开发
Function() 构造函数
Function() 构造函数
46 0
Array.prototype.includes() 原型调用用法案例讲解
Array.prototype.includes() 原型调用用法案例讲解
87 2
重写Function.prototype.bind
重写Function.prototype.bind
92 0
|
JavaScript
原型和原型链 prototype和proto的区别
原型和原型链 prototype和proto的区别
196 0
一段代码看懂原型对象中的callback
一段代码看懂原型对象中的callback
109 0
一段代码看懂原型对象中的callback
ES6—06:构造函数原型对象prototype
ES6—06:构造函数原型对象prototype
108 0
ES6—06:构造函数原型对象prototype
|
Web App开发 JavaScript 前端开发