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

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

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

ExpandedBlockStart.gif 代码
( 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 (上午) 星期六

 


转载于:https://www.cnblogs.com/rentj1/archive/2010/02/05/1664720.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值