问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

[javascript练习]子类继承父类方法并延时实例化

发布网友 发布时间:2022-04-24 12:02

我来回答

2个回答

热心网友 时间:2022-04-24 13:31

在firefox中可以用Console调试 (Ctrl+Shift+K):

console.log( var1, var2, var3 ...)

在Web Console 中会显示var1 var2 var3 ...,以一个空格隔开。


正如wjsl所说,定时器中

setTimeout(Student_A.wakeup,3000 )

这里是把Student_A.wakeup这个函数作为参数传入了setTimeout函数。我们知道,函数的定义里面如果有this这个reserved word,那么它的含义取决于调用的方式。如果是用obj.function1 这种带点的格式来调用,那么this就是obj。 如果是直接调用,this则是window。那么在这里3秒钟过后, wakeup将会被直接调用,因为您并没有传入Student_A。


解决办法:加入一个sleep() 方法:

People.prototype = { 
     //...
sleep: function(ration) { //5 秒后wakeup
var $this = this;
setTimeout(function(){
$this.wakeup();
}, ration);
        },
//...

其中$this变量以当前对象赋值。
由于js closure的特性,当setTimeout时间到,匿名函数中的$this还是之前赋予的那个对象。所以如果运行Student_A.sleep(5000),5秒钟之后js engine 就会运行Student_A.wakeup()。

(符号“$" 跟a-z,1-9 一样,都是变量名中可以使用的字符)。


这里删掉:

//Student子类构造函数,内部调用超类构造函数
function Student(name) {

  People.call(this, name); //从People类继承,同时传递参数name
};

Java构造函数才是分开来写的,javascript 中由构造函数产生对象(配合 new关键字),并没有类。

代码供参考:

var Student = function(classroom, name, age) { 
this.classroom = classroom;
People.call(this, name, age);
};


“醒来”之后,属性改变:

可以先sleep(),然后马上改属性。然后wakeup()的时候就会发现属性产生了变化 :D


文中的 Student.prototype 在运行 Student.prototype = new People(); 语句时被完全更改。所以setClass() 已经无法调用。可以在重写wakeup时同样定义。

热心网友 时间:2022-04-24 14:49

/*
没太明白你想要更改哪个对像的属性
在定时器中,this是指向window的
你可以 setTimeout(function(){
Student_A.wakeup()

},3000)
*/
//这个定义错误,不会构成属性
Student.prototype = {
setClass: function() { //定义classroom属性的set方法
this.classroom = classroom; //引用当前对象属性classroom。并将该属性值赋给参数值
}
};追问根据题意,应该要改变 People_B的年龄属性和Student_A的班级属性。 五秒后,改变。

我试过:
Student.prototype = {
setClass: function(classroom) { //带参
this.classroom = classroom;
}
};
行是行,但是不知道怎么让它五秒后再触发。

追答你确定有这个属性?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
打印机硒鼓安装方法及步骤 如何安装新硒鼓? 我现在很困惑该不该和女友继续发展下去 电脑上字体怎么安装方法简单易行的字体安装步骤及技巧 网页字体显示不出.怎么办? 如何添加电脑上没有的字体解决电脑字体限制增加字体选择多样性_百度知 ... 不有效字体文件 电脑字体识别不了 梦见身上煤炭黑的长辈给我钥匙的预兆 株洲最值得一去的古镇 怎么隐藏自己的码 如果我来种植紫玉黑土豆,公司要不要回收跟提供种苗? 微信怎么设置隐藏,不让好友看到? 苹果手机微信 怎样设置在资料里不显示 安徽省涡阳县可以种植黑土豆么,就是人们所谓的黑金刚, 国学小知识,对联如何区分上下联 怎样对好友隐藏 苹果手机6splus微信隐藏怎么隐藏 微信怎么设置隐藏,不让好友看到 苹果手机怎么隐藏? 苹果手机怎么隐藏? 微信怎么隐藏不让好友看到 苹果手机群牙印里怎么样隐藏自己的 苹果微信怎么隐藏码呀 微信怎么设置隐藏,不让好友看到? 怎么对微信好友隐藏自己的 苹果微信怎么隐藏码呀? 工作设想与工作打算的区别? 苹果手机微信 怎样设置在资料里不显示 怎样理解岗位设想 枣花糕的制作方法 六层枣花糕的各种做法 金骏眉茶叶古法制茶价格 The method get(Class, Serializable) 苹果6屏保时间怎么移动设置 关于javascript的问题 高手进 打印机如何保存刚刚调好的打印样式 大件发什么快递比较便宜些 哺乳期能喝枇杷膏吗 枇杷膏孕妇可以吃吗 孕妇可以吃枇杷膏吗? 枇杷膏孕妇可以吃不 咳嗽孕妇可以吃枇杷膏吗 对方知道你能对你定位吗? 孕妇可以吃枇杷膏止咳吗 The method split(String) in the type String is not applicable for the arguments (char) 包头哪里有卖土家莓茶叶 工商银行5年存定期利息是多少钱? 如何挂失二代身份证 二代身份证如何挂失