使用 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);