• 一段写得很漂亮的基于对象的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>


  • 相关阅读:
    TP5.1 查看具体版本
    require(): open_basedir restriction in effect. 解决方法
    解决php -v查看到版本于phpinfo()打印的版本不一致问题
    Session机制详解
    c# 获取项目的根目录
    会修电脑不会修收音机?-闲聊设计模式原则
    CSV格式数据如何导入SqlServer?
    CSV格式数据如何导入MySQL?
    反射—程序员的快乐 -08
    策略模式 是一种好策略 -07
  • 原文地址:https://www.cnblogs.com/xinzhuangzi/p/4100524.html
Copyright © 2020-2023  润新知