在Javascript类中使用setTimeout第1/2页
最近遇到了一道 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下一页阅读全文
相关推荐
-
JavaScript setTimeout和setInterval的使用方法 说明
不同的是setInterval会每隔指定的时间段就执行一次代码,具有重复性.而setTimeout只会调用后执行一次. 下面通过函数的建立和函的自动删除来深刻理解两个函数: 1.函数的建立 setTimeOut的建立: 复制代码 代码如下: showTime(); function showTime() { var today = new Date(); alert("The time is: " + today.toString()); setTimeout("showTi
-
javascript中setTimeout使用指南
javascript中setTimeout使用指南 <script> /* //方法1 function slows(){ alert("15S后弹出!"); } setTimeout("slows()",5000); //方法2 function slows(){ alert("15S后弹出!"); } setTimeout(slows,5000); */ //方法3 function slows(){ alert("15
-
Javascript的setTimeout()使用闭包特性时需要注意的问题
setTimeout经常被用于延迟执行某个函数,用法为: 复制代码 代码如下: setTimeout(function(){ - }, timeout); 有时为了进行异步处理,而使用setTimeout(function-,0):比如: 复制代码 代码如下: function f(){ - // get ready setTimeout(function(){ -. // do something }, 0); return -; } 在setTimeout设定的函数处理器之前,函数f返回
-
Javascript对象中关于setTimeout和setInterval的this介绍
在Javascript里,setTimeout和setInterval接收第一个参数是一个字符串或者一个函数,当在一个对象里面用setTimeout延时调用该对象的方法时 复制代码 代码如下: function obj() { this.fn = function() { alert("ok"); console.log(this); setTimeout(this.fn, 1000);//直接使用this引用当前对象 } } var o = new obj(); o.fn(); 然后
-
JavaScript window.setTimeout() 的详细用法
js的setTimeout方法用处比较多,通常用在页面刷新了.延迟执行了等等.但是很多javascript新手对setTimeout的用法还是不是很了解.虽然我学习和应用javascript已经两年多了,但是对setTimeout方法,有时候也要查阅资料.今天对js的setTimeout方法做一个系统地总结. setInterval与setTimeout的区别 说道setTimeout,很容易就会想到setInterval,因为这两个用法差不多,但是又有区别,今天一起总结了吧! setTimeo
-
javascript setTimeout()传递函数参数(包括传递对象参数)
于是,上网查找了一下,用了另一种写法setTimeout("fun("+参数+")", 1000),还是不行,但是以上写法在传递form表单的textarea是可以的,比如hml是这样: 复制代码 代码如下: <body> <div class="main"> <div id="showpane" class="showpane"> </div> <di
-
javascript setTimeout和setInterval计时的区别详解
setTimeout方法是定时程序,也就是在什么时间以后干什么.干完了就拉倒.setInterval方法则是表示间隔一定时间反复执行某操作.如果用setTimeout实现setInerval的功能,就需要在执行的程序中再定时调用自己才行.如果要清除计数器需要 根据使用的方法不同,调用不同的清除方法:例如:(1): 复制代码 代码如下: t=setTimeout('northsnow()',1000);clearTimeout(t);(2):t=setInterval('northsnow()',
-
Javascript延迟执行实现方法(setTimeout)
1.延迟切换tab 需求:页面上有几个tab,切换tab的时候,会对某个特定区域的数据进行拉取更新. 弊端:用户从第一个tab切换一直快速切到尾,就会产生n个ajax请求.其实用户只是需要看到最后一个tab的数据. 复制代码 代码如下: var changeTab = function(){ var timeId = 0; return function(tabId){ if(timeId){ clearTimeout(timeId); timeId=0; } setTimeout(functi
-
JavaScript SetInterval与setTimeout使用方法详解
setTimeout和setInterval的语法相同.它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码.不过这两个函数还是有区别的,setInterval在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代码,而setTimeout只执行一次那段代码.区别:window.setTimeout("function",time)://设置一个超时对象,只执行一次,无周期 window.setInterva
-
在Javascript类中使用setTimeout第1/2页
最近遇到了一道 Javascript 考题,内容如下: 尝试实现注释部分的 Javascript 代码,可在其他任何地方添加更多 代码(如不能实现,说明一下不能实现的原因): var Obj = function(msg){ this.msg = msg; this.shout = function(){ alert(this.msg); } this.waitAndShout = function(){ // 隔五秒钟后执行上面的 shout 方法
-
理解javascript定时器中的setTimeout与setInterval
一.解释说明 1.概述 setTimeout:在指定的延迟时间之后调用一个函数或者执行一个代码片段 setInterval:周期性地调用一个函数(function)或者执行一段代码. 2.语法 setTimeout: var timeoutID = window.setTimeout(func, delay, [param1, param2, ...]); var timeoutID = window.setTimeout(code, delay); timeoutID 是该延时操作的数字ID,
-
JavaScript中从setTimeout与setInterval到AJAX异步
setTimeout与setInterval执行 首先我们看一下以下代码打印结果 console.log(1); setTimeout(function() { console.log(2); },100) setTimeout(function() { console.log(3); },50) console.log(4); 打印结果是 1.4.3.2,你可能觉得理所应当,那我们再看下下面这个例子 console.log(1); setTimeout(function() { console
-
JavaScript ES6中class定义类实例方法
目录 前言 正文 1.声明类的两种方式: 2.class 类的构造函数 3.class中方法定义 3.1 class 中定义普通的实例方法 3.2 class 类中定义访问器方法 3.3 类的静态方法(类方法) 文末 前言 我们会发现,按照之前学习过的构造函数形式创建 类 ,不仅仅和编写普通的函数过于相似,而且代码并不容易理解. 在 ES6(ECMAScript2015)新的标准中使用了class关键字来直接定义类:但是类本质上依然是之前所学习过的构造函数.原型链的语法糖而已.所以学好之前的构造
-
JavaScript中定时器setTimeout()和setInterval()的用法
JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成. 一.setTimeout() setTimeout函数用来指定某个函数或某段代码,在多少毫秒之后执行.它返回一个整数,表示定时器的编号,以后可以用来取消这个定时器. var timerId = setTimeout(func|code, delay) 上面代码中,setTimeout函数接受两个参数,第一个参数func|code是将要推迟执行的函数名
-
JavaScript ES6中的简写语法总结与使用技巧
ES6为一些已有的功能提供了非破坏性更新,这类更新中的大部分我们可以理解为语法糖,称之为语法糖,意味着,这类新语法能做的事情其实用ES5也可以做,只是会稍微复杂一些.本章我们将着重讨论这些语法糖,看完之后,可能你会对一些你很熟悉的ES6新语法有不一样的理解. JavaScript ES6对象字面量 对象字面量是指以{}形式直接表示的对象,比如下面这样: var book = { title: 'Modular ES6', author: 'Nicolas', publisher: 'O´Reil
-
JS类中定义原型方法的两种实现的区别
我们知道,给JavaScript类添加原形(prototype)方法是很简单的.而且常用的有下面这两种方法,可是这两种方法在使用时有区别吗? JScript Class: function JSClass() { } Extends prototype method: JSClass.prototype.MethodA = function() { }; Or function = JSClass.prototype.MethodA() { }; 其实这两个原形定义方式可以简化一下来讨论,先把它
-
JavaScript ES6中CLASS的使用详解
前言 对于javascript来说,类是一种可选(而不是必须)的设计模式,而且在JavaScript这样的[[Prototype]] 语言中实现类是很蹩脚的. 这种蹩脚的感觉不只是来源于语法,虽然语法是很重要的原因.js里面有许多语法的缺点:繁琐杂乱的.prototype 引用.试图调用原型链上层同名函数时的显式伪多态以及不可靠.不美观而且容易被误解成"构造函数"的.constructor. 除此之外,类设计其实还存在更进一步的问题.传统面向类的语言中父类和子类.子类和实例之间其实是复
-
使用Modello编写JavaScript类
From:http://www.ajaxwing.com/index.php?id=2 一,背景 回顾一下编程语言的发展,不难发现这是一个不断封装的过程:从最开始的汇编语言,到面向过程语言,然后到面向对象语言,再到具备面向对象特性的脚本语言,一层一层封装,一步一步减轻程序员的负担,逐渐提高编写程序的效率.这篇文章是关于 JavaScript 的,所以我们先来了解一下 JavaScript 是一种怎样的语言.到目前为止,JavaScript 是一种不完全支持面向对象特性的脚本语言.之所以这样说是因
随机推荐
- MySQL查看表和清空表的常用命令总结
- java 中http请求为了防止乱码解决方案
- 阿里云云服务器Linux系统FTP服务器搭建设置教程
- oracle 在一个存储过程中调用另一个返回游标的存储过程
- VS2015下简单使用EF框架的方法
- 正则方式的自动小偷抓网程序
- android编程之多线程编程实例分析
- 基于PHP给大家讲解防刷票的一些技巧
- wxPython窗口的继承机制实例分析
- JS Range HTML文档/文字内容选中、库及应用介绍
- jQuery 3.0 的 setter和getter 模式详解
- js全选实现和判断是否有复选框选中的方法
- Android自定义View展示Wifi信号强弱指示方法示例
- Java中的字符串用法小结
- PHP 表单提交及处理表单数据详解及实例
- C#异步调用实例小结
- Python实现抓取HTML网页并以PDF文件形式保存的方法
- 使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
- 在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
- python函数与方法的区别总结