重新认识js-1

1.js对象的构造方法:

 

#region js对象的构造方法modal模型:
var  disc  =   new  Array();
function  disc(id,title,description)
{
 
this.id = id;
 disc[i] 
= this;//不同于标准oo的关键语句
 this.description = description;
 
this.colors = new Object();
 
this.sizes = new  Object();
}


disc.prototype.addColor(color)
{
 
this.colors.append(color,true);
}

#endregion

2.撤销一个对象

#region 撤销一个对象
disc[id]
= null ;
#endregion

3.观察者模式

 

#region
window.onloadListeners 
=   new  Array();
window.addOnLoadListener(listener)
{
 window.onloadListeners(window.onloadListeners.length) 
= listener;
}


window.onload 
=   function () {
 
for (var i = 0;i<window.onloadListeners.length ;i++ )
{
  
var func = window.onloadListeners[i];
  func.call();
 }

}

#endregion

 

4.建立XMLHttpRequest的方法

#region 
var  XMLHttp  =   {
 _objPool: [],

 _getInstance: 
function ()
 
{
  
for (var i = 0; i < this._objPool.length; i ++)
  
{
   
if (this._objPool[i].readyState == 0 || this._objPool[i].readyState == 4)
    
{
     
return this._objPool[i];
    }

  }


  
// IE5中不支持push方法
  this._objPool[this._objPool.length] = this._createObj();

  
return this._objPool[this._objPool.length - 1];
 }
,

 _createObj: 
function ()
 
{
  
if (window.XMLHttpRequest)
  
{
   
var objXMLHttp = new XMLHttpRequest();

  }

  
else
  
{
   
var MSXML = ['MSXML2.XMLHTTP.5.0''MSXML2.XMLHTTP.4.0''MSXML2.XMLHTTP.3.0''MSXML2.XMLHTTP''Microsoft.XMLHTTP'];
   
for(var n = 0; n < MSXML.length; n ++)
   
{
    
try
     
{
      
var objXMLHttp = new ActiveXObject(MSXML[n]);
      
break;
     }

    
catch(e)
     
{
     }

   }

  }
 

 
// mozilla某些版本没有readyState属性 
  if (objXMLHttp.readyState == null)
  
{
   objXMLHttp.readyState 
= 0;

   objXMLHttp.addEventListener(
"load"function ()
   
{
    objXMLHttp.readyState 
= 4;

    
if (typeof objXMLHttp.onreadystatechange == "function")
    
{
     objXMLHttp.onreadystatechange();
    }

   }
,false);
  }


 
return objXMLHttp;
 }
,

// 发送请求(方法[post,get], 地址, 数据, 回调函数)
sendReq: function (method, url, data, callback)
 
{
  
var objXMLHttp = this._getInstance();

  
with(objXMLHttp)
  
{
   
try
   
{
    
// 加随机数防止缓存
    if (url.indexOf("?"> 0)
     
{
      url 
+= "&randnum=" + Math.random();
     }

    
else
     
{
      url 
+= "?randnum=" + Math.random();
     }


    open(method, url, 
true);

    
// 设定请求编码方式
    setRequestHeader('Content-Type''application/x-www-form-urlencoded; charset=UTF-8');
    send(data);
    onreadystatechange 
= function ()
    
{
     
if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304))
     
{
      callback(objXMLHttp);
     }

    }

   }

   
catch(e)
   
{
    alert(e);
   }

  }

 }

}

#endregion
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值