js
var SimpleHandler() {};
SimpleHandler.prototype = {
request: function(method, url, callback, postVars) {
...
},
createXhrObject: function() {
var methods = [
function() { return new XMLHttpRequest(); },
function() { return new ActiveXObject('Msxml2.XMLHTTP'); },
function() { return new ActiveXOBject('Microsoft.XMLHTTP'); }
];
for(var i=0,len=methods.length; i<len; i++) {
try {
methods[i]();
} catch(e) {
continue;
}
this.createXhrObject = methods[i];
return methods[i];
}
throw new Error('SimpleHandler: Could not create an XHR object.');
}
}
在首次执行是,它会依次尝试三种用于创建XHR对象的不同方法,一旦遇到管用的,它就会返回所创建的对象并将自身改为用以创建那个对象的函数。这个新函数就变成了createXhrObject方法。这种技术被称为memoizing
,它可以用来创建存储这复杂计算的函数,以免再次进行这种计算。