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 (上午) 星期六


  • 相关阅读:
    PAT Basic 1077 互评成绩计算 (20 分)
    PAT Basic 1055 集体照 (25 分)
    PAT Basic 1059 C语言竞赛 (20 分)
    PAT Basic 1072 开学寄语 (20 分)
    PAT Basic 1049 数列的片段和 (20 分)
    蓝桥杯BASIC-13 数列排序
    蓝桥杯入门——3.序列求和
    蓝桥杯入门——2.圆的面积
    蓝桥杯入门——1.Fibonacci数列
    树的总结(遍历,BST,AVL原型,堆,练习题)
  • 原文地址:https://www.cnblogs.com/rentj1/p/1664720.html
Copyright © 2011-2022 走看看