javascript 的 属性、方法、事件

使用 javascript 设计一个学生类、(属性:ID、姓名、性别,方法:学习、休息、,事件:上学、放学、上课、下课)学校有定时器每1秒钟触发一次时钟事件,每节课45分钟,课间15分钟

var Student=function(ID){
    this.ID=ID;
    this.Name="noname";
    this.Sex=1;
}

// 属性另1种实现方式
//Student.prototype.get_ID(){
//	return this._ID;
//}
//Student.prototype.set_ID(value){
//	this._ID=value;
//}

//...
//Student.prototype.get/set_xxx(){
//	return this._xxx;/this._xxx=value;
//}
//...

Student.prototype.Study=function(lession){
    //...
}

Student.prototype.Rest=function(){
    //...
}


//事件的推荐实现方式
var GotoSchoolEvent = new Event("GotoSchoolEvent", {"name":"上学事件"});
var GoHomeEvent = new Event("GotoSchoolEvent", {"name":"放学事件"});
var ClassIsStartEvent = new Event("GotoSchoolEvent", {"name":"上课事件"});
var ClassIsOverEvent = new Event("GotoSchoolEvent", {"name":"下课事件"});

//---------------事件的另1种实现方式-------已被W3C标准弃用,浏览还支持------
// var GotoSchoolEvent = document.createEvent("HTMLEvents");
// var GoHomeEvent = document.createEvent("HTMLEvents");
// var ClassIsStartEvent = document.createEvent("HTMLEvents");
// var ClassIsOverEvent = document.createEvent("HTMLEvents");

/* 
* 实例化创建好的事件对象
* 第一个参数:事件类型(就好像是click还是submit)
* 第二个参数:是否冒泡
* 第三个参数:是否阻止浏览器默认行为(例如阻止submit事件提交表单)
*/
// GotoSchoolEvent.initEvent("GotoSchoolEvent",true,true);
// GoHomeEvent.initEvent("GoHomeEvent",true,true);
// ClassIsStartEvent.initEvent("ClassIsStartEvent",true,true);
// ClassIsOverEvent.initEvent("ClassIsOverEvent",true,true);

/* 给自定义事件对象的属性赋值。这个属性一开始不存在,我们这里将其实例化了 */
// GotoSchoolEvent.name = "上学事件";
// GoHomeEvent.name = "放学事件";
// ClassIsStartEvent.name = "上课事件";
// ClassIsOverEvent.name = "下课事件";
//-------------------------------------------------------------------------

setInterval(()=>{
    var t=new Date();
    if(t.getHours()>=8 && t.getHours()<17 && !GotoSchoolEvent.IsGotoSchool)
    {
        GotoSchoolEvent.IsGotoSchool=true;
        GoHomeEvent.IsGoHome=false;
        /* 触发自定义事件 */
        document.dispatchEvent(GotoSchoolEvent);  
    }

    if((t.getHours()<8 ||  t.getHours()>=17)&& !GoHomeEvent.IsGoHome)
    {
        GoHomeEvent.IsGoHome=true;
        GotoSchoolEvent.IsGotoSchool=false;
        /* 触发自定义事件 */
        document.dispatchEvent(GoHomeEvent);  
    }

    if((t.getHours()>=8 && t.getHours()<17) && t.getMinutes()<=45 && !ClassIsStartEvent.IsClassStart)
    {
        ClassIsStartEvent.IsClassStart=true;
        ClassIsOverEvent.IsClassOver=false;
        /* 触发自定义事件 */
        document.dispatchEvent(ClassIsStartEvent);         
    }

    if((t.getHours()>=8 && t.getHours()<17) && t.getMinutes()>45 && !ClassIsOverEvent.IsClassOver)
    {
        ClassIsOverEvent.IsClassOver=true;
        ClassIsStartEvent.IsClassStart=false;
        /* 触发自定义事件 */
        document.dispatchEvent(ClassIsOverEvent);         
    }

},1000)
//事件的响应函数
document.addEventListener("GotoSchoolEvent",function(e) {
    console.log("事件:" + e.name);
},false);
document.addEventListener("GoHomeEvent",function(e) {
    console.log("事件:" + e.name);
},false);
document.addEventListener("ClassIsStartEvent",function(e) {
    console.log("事件:" + e.name);
},false);
document.addEventListener("ClassIsOverEvent",function(e) {
    console.log("事件:" + e.name);
},false);

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值