WEB开发网
开发学院网页设计JavaScript JavaScript模仿Apache的ObjectPool 阅读

JavaScript模仿Apache的ObjectPool

 2010-09-14 13:22:01 来源:WEB开发网   
核心提示: 上面代码中ObjectPool的构造参数poolableObjectFactory的声明如下: // 注意: 这只是说明,不是真正的代码!var PoolableObjectFactory = {makeObject: function() {}, // 创建一个新的对象,JavaScri

上面代码中ObjectPool的构造参数poolableObjectFactory的声明如下:

// 注意: 这只是说明,不是真正的代码!
var PoolableObjectFactory = {    
  makeObject: function() {}, // 创建一个新的对象。(必须声明)
activateObject: function(object) {}, // 当一个对象被激活时(即被借出时)触发的方法。(可选)
passivateObject: function(object) {}, // 当一个对象被钝化时(即被归还时)触发的方法。(可选)
destroyObject: function(object) {} // 销毁一个对象。(可选)    
};

结合XMLHttpRequest创建过程的简陋示例:

// 声明XMLHttpRequest的创建工厂
var factory = {    
  makeObject: function() {
    // 创建XMLHttpRequset对象
    // 注:这里的创建方法不够强壮,勿学!
    if (window.ActiveXObject){
      return new ActiveXObject("Microsoft.XMLHTTP");
    }
    else {
      return new XMLHttpRequest();
    }
  },
passivateObject: function(xhr) {
    // 重置XMLHttpRequset对象
    xhr.onreadystatechange = {};
    xhr.abort();
  }
};
var pool = new ObjectPool(factory); // 创建对象池
// ......
var xhr = pool.borrowObject(); // 获得一个XMLHttpRequest对象
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4) {
    // ......
    pool.returnObject(xhr); // 归还XMLHttpRequest对象
  }
};
xhr.open(method, url, true);
// ......

Tags:JavaScript 模仿 Apache

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接