• 面向对象的JS私有成员变量实现方式


    与网上广为流传的特权方法有所不同,这里是使用闭包来实现的。并以一个简单的JS时钟示例作为演示。

    各位如果觉得有什么不妥的地方欢迎指出。

    代码
    (function JSClock(){
    //partial class JSClock {                  
        var _timeID = null;
        
    var _timeRunning = false;
        
    var _info;
        
    var _this;
        
    //构造函数
        function JSClock(elementId) {
            _this = this;
           _info =  document.getElementById(elementId);
        }
        JSClock.prototype.getDateTime = function(){};//因为具体显示需求不同所以没实现
        JSClock.prototype.run = function() {
           
    var now = {};
           
    var tick = new Date();
           now.hours = tick.getHours();
           now.minutes = tick.getMinutes();
           now.seconds = tick.getSeconds();
           now.day = tick.getDay();
           now.month = tick.getMonth()+1;
           now.date = tick.getDate();
           now.year = tick.getYear();
           
    if (now.year < 1000) now.year += 1900;
           _timeRunning = true;
           _info.innerHTML = _this.getDateTime(now);
           _timeID = setTimeout(arguments.callee,1000);
        };
        
        JSClock.prototype.stop = function(){
            
    if(!_timeRunning)return
            clearTimeout(_timeID);
            _timeRunning = false;
        };
    //}
        window.JSClock = JSClock;
    })();


    //partial class JSClock{
        //virtual
        JSClock.prototype.getDateTime = function(now){
           
    var current,weekday;
           current = now.year + "" + now.month + "" + now.date + "日 " + ((now.hours >12? now.hours -12 :now.hours);
           current += ((now.minutes < 10? ":0" : ":"+ now.minutes;
           current += ((now.seconds < 10? ":0" : ":"+ now.seconds;
           current += (now.hours >= 12? " (下午)" : " (上午)";
           
    if(now.day==0) weekday = " 星期日";
           
    if(now.day==1) weekday = " 星期一";
           
    if(now.day==2) weekday = " 星期二";
           
    if(now.day==3) weekday = " 星期三";
           
    if(now.day==4) weekday = " 星期四";
           
    if(now.day==5) weekday = " 星期五";
           
    if(now.day==6) weekday = " 星期六";
           current += weekday;
           
    return current;
        };
    //}


    //测试
    var time = new JSClock("test");
    time.run();

    //运行结果会在ID为test的元素中实时显示当前时间格式如:

    //2010年2月6日 0:13:53 (上午) 星期六


  • 相关阅读:
    ListView的使用(二)长按弹出上下文菜单
    自己遇到程序安装完图标不显示记录
    ListView的使用(一)
    Docker 构建私有镜像仓库
    DockerFile 编译语法详解
    Docker 添加容器SSH服务
    Docker 数据卷与容器互联
    Docker 镜像与容器管理
    Docker 容器简介与部署
    Zabbix-自带监控项与Kye
  • 原文地址:https://www.cnblogs.com/rentj1/p/1664720.html
Copyright © 2020-2023  润新知