zoukankan      html  css  js  c++  java
  • 面向对象的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 (上午) 星期六


  • 相关阅读:
    游戏编程模式之事件队列模式
    游戏编程模式之组件模式
    游戏编程模式之类型对象模式
    游戏编程模式之父类沙盒模式
    游戏编程模式之字节码模式
    游戏人工智能简介
    游戏编程模式之更新模式
    游戏编程模式之游戏循环
    .vimrc配置文件 + gvim 运行 gnome-terminal 完成后等待
    js 批量移除steam游戏 移除用户凭证中免费获取的物品
  • 原文地址:https://www.cnblogs.com/rentj1/p/1664720.html
Copyright © 2011-2022 走看看