在Javascript类中使用setTimeout

国安马三爷

国安马三爷

2016-02-19 08:59

下面这个在Javascript类中使用setTimeout教程由图老师小编精心推荐选出,过程简单易学超容易上手,喜欢就要赶紧get起来哦!
最近遇到了一道 Javascript 考题,内容如下:

尝试实现注释部分的 Javascript 代码,可在其他任何地方添加更多
代码(如不能实现,说明一下不能实现的原因):

var Obj = function(msg){
   this.msg = msg;
   this.shout = function(){
      alert(this.msg);
   } 

   this.waitAndShout = function(){
      // 隔五秒钟后执行上面的 shout 方法
   }
}

var testObj = new Obj("Hello,World!");
testObj.shout();坦白的说,之前我并没有在 Javascript 类中使用 setTimeout/setInterval 的经验,所以开始就很草率的认为这是无法实现的。但是经过深思熟虑以后发现是可以实现的。退一步说,隔五秒执行某段语句是非常容易实现的。比如不考虑别的因素,题目中的函数是可以这样写:

this.waitAndShout = function(){
    setTimeout('this.shout()', 5000);
}在运行以后,谁都会意识到 this 这个变量是无法找到的。但是这是为什么呢,很快就可以意识到,其实 setTimeout/setInterval 是 window 对象的一个方法,所以也可以写成 window.setTimeout/window.setInterval,那么上述的 this.shout() 就非常可以容易理解为什么不能执行了,因为它实际上调用的是 window.shout() 。

知道了原因以后解决起来就非常的容易了,只要将对象绑定到 window 对象下就可以(我对 Javascript 有趣的对象机制感到兴奋)。那么,上述的函数再做一个小的修改:

this.waitAndShout = function() {
    window.Obj = this;
    setTimeout('Obj.shout()', 5000);
}这样就可以了。实际上

setTimeout('Obj.shout()', 5000);等价于
当前1/2页 12下一页
展开更多 50%)
分享

猜你喜欢

在Javascript类中使用setTimeout

Web开发
在Javascript类中使用setTimeout

setTimeout在类中使用的问题!

Web开发
setTimeout在类中使用的问题!

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在IE中使用JavaScript

Web开发
在IE中使用JavaScript

在VBScript中使用类

Web开发
在VBScript中使用类

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

在ASP中使用类

ASP
在ASP中使用类

在IE中使用JavaScript(一)

电脑网络
在IE中使用JavaScript(一)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

深入C++中API的问题详解

深入C++中API的问题详解

js实现图片显示局部鼠标经过显示全部的效果

js实现图片显示局部鼠标经过显示全部的效果
下拉加载更多内容 ↓