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