一段写得很漂亮的基于对象的JS代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gbk">

<title>Untitled Document</title>

<script type="text/javascript">

function Map() { 

this.keys = new Array(); 

this.data = new Object(); 

this.put = function(key, value) 

if(this.data[key] == null){ 

this.keys.push(key); 

this.data[key] = value; 

return this;

};

this.get = function(key) { 

return this.data[key]; 

}; 

this.remove = function(key) {

this.keys.remove(key);

this.data[key] = null; 

};

this.each = function(fn){ 

  if(typeof fn != 'function'){ 

  return;

  } 

  var len = this.keys.length; 

  for(var i=0;i<len;i++){ 

  var k = this.keys[i]; 

  fn(k,this.data[k],i); 

  }

}; 

this.entrys = function() { 

var len = this.keys.length; 

var entrys = new Array(len); 

for (var i = 0; i < len; i++) { 

entrys[i] = { key : this.keys[i], value : this.data[this.keys[i]] };

return entrys;

}; 

this.isEmpty = function() { 

return this.keys.length == 0; 

}; 

this.size = function(){ 

return this.keys.length; 

}; 

this.toString = function(){ 

var s = "{"; 

for(var i=0;i<this.keys.length;i++,s+=','){ 

var k = this.keys[i]; 

s += k+"="+this.data[k]; 

if(!this.isEmpty){ 

s=s.substring(0,s.length-1);

s+="}"; 

return s; 

}; 

function Jfree(){

this.imageName;

this.imageId;

this.url;

this.params;

this.run = function(imageId, url, params){

//alert(params); 

this.imageId = imageId;

this.url = url;

this.params = params;

this.request(this);

};

this.request = function(){

//alert(jfree); 

//xmlhttp.setRequestHeader("Content-Type","text/xml;charset=utf-8"); 

var xmlhttp = this.getXmlRequest();

//alert(jfree.params); 

//xmlhttp.setRequestHeader("Content-Type","text/xml;charset=utf-8");���û

var temp = this;

xmlhttp.onreadystatechange = function(){

if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

var value = xmlhttp.responseText;

if (temp.imageId) {

document.getElementById(temp.imageId).src = value;

return;

}

}

};

var len = this.params.size();

var str = '';

for (var i = 0; i < len; i++) {

for (var property in this.params[i]) {

var value = this.params[i][property];

if (value != null) {

str = property + '=' + value;

}

}

}

if (this.params != null) {

this.params.each(function(key, value, index){

str += key + '=' + value + '&';

});

str = str.substring(0, str.length - 1);

//alert(str); 

if (str) {

this.url += '?';

this.url += str;

}

//alert("url"+this.url); 

// alert(this.url); 

xmlhttp.open("POST", this.url, true);

//this.url = ''; 

xmlhttp.send(null);

};

this.getXmlRequest = function(){

//alert("444"); 

var xmlHttp = null;

try {

// Firefox, Opera 8.0+, Safari 

xmlHttp = new XMLHttpRequest();

// alert("Firefox");

catch (e) {

try {

xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");

// alert("IE 6.0") 

catch (e) {

xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

// alert("IE 5.5"); 

}

}

return xmlHttp;

};

}

}

function doAction(imageId, url, params){

var jfree = new Jfree();

jfree.run(imageId, url, params);

}

function doTimer(imageId, url, params, milliSecond, isLoop){

//var map = new Map(); 

var jfree = new Jfree();

//alert(params.type); 

var map = new Map().put('name', 'pie').put('aaa', 'bbb');

//alert(${imageId}); 

//alert(params.type); 

jfree.run(imageId, url, params);

// alert(params); 

if (params != null) {

var map = new Map();

params.each(function(key, value, index){

map.put(key, value);

}

);

// alert(map.prototype); 

theTime = setTimeout('doAction(\'' + imageId + '\',\'' + url + '\',' + params + ')', milliSecond);

}

else {

theTime = setTimeout('doTimer(\'' + imageId + '\',\'' + url + '\',' + params + ',' + milliSecond + ',' + isLoop + ')', milliSecond);

}

if (!isLoop) {

window.clearTimeout(theTime);

}

}

function testMap(){

var map = new Map().put('name', 'pie').put('aaa', 'bbb');

var entry = map.entrys();

for(var i=0;i<entry.length;i++){

alert("key: "+entry[i].key+", value: "+entry[i].value);

}

}

testMap();

</script>

</head>

<body>

</body>

</html>


原文地址:https://www.cnblogs.com/xinzhuangzi/p/4100524.html