- 浏览: 66255 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
lzfsuru250:
写好插件了要怎么用呢?
jquery 在firefox下不支持backgroundPositionY -
guduxing890:
多谢。 解决了我一个兼容性问题。
jquery 在firefox下不支持backgroundPositionY
引自:http://blog.csdn.net/free_wind22/archive/2008/03/28/2224363.aspx
尝试实现注释部分的 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);
等价于
window.setTimeout('window.Obj.shout()', 5000);
另一种方法:
var Obj = function(msg)...{
this.msg = msg;
this.shout = function() ...{
alert(this.msg);
this.waitAndShout();
}
var _self = this;
this.waitAndShout = function() ...{
setTimeout(function()...{_self.shout()}, 5000);
}
}
var testObj = new Obj("Hello,World!");
testObj.shout();
改进的另一种方法:
闭包是对的,但要避免循环中产生匿名函数
var Obj = function(msg)...{
this.msg = msg;
var _self=this;
var shout=this.shout = function() ...{
alert(_self.msg);
_self.waitAndShout();
}
this.waitAndShout = function() ...{
setTimeout(shout, 1000);
}
}
var testObj = new Obj("Hello,World!");
testObj.shout();
方法改进:
<script language="javascript">
/**//**//**//*
功能:修改 window.setTimeout,使之可以传递参数和对象参数
使用方法: setTimeout(回调函数,时间,参数1,,参数n)
*/
var __sto = setTimeout;
window.setTimeout = function(callback,timeout,param)...{
var args = Array.prototype.slice.call(arguments,2);
var _cb = function()...{
callback.apply(null,args);
}
__sto(_cb,timeout);
}
///测试代码
function aaaa(a)...{
alert(a);
}
function aaaaa(a,b,c)...{
alert(a + b + c);
}
var a = new Object();
window.setTimeout(aaaa,1000,a);
window.setTimeout(aaaaa,2000,a,6,7);
</script>
尝试实现注释部分的 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);
等价于
window.setTimeout('window.Obj.shout()', 5000);
另一种方法:
var Obj = function(msg)...{
this.msg = msg;
this.shout = function() ...{
alert(this.msg);
this.waitAndShout();
}
var _self = this;
this.waitAndShout = function() ...{
setTimeout(function()...{_self.shout()}, 5000);
}
}
var testObj = new Obj("Hello,World!");
testObj.shout();
改进的另一种方法:
闭包是对的,但要避免循环中产生匿名函数
var Obj = function(msg)...{
this.msg = msg;
var _self=this;
var shout=this.shout = function() ...{
alert(_self.msg);
_self.waitAndShout();
}
this.waitAndShout = function() ...{
setTimeout(shout, 1000);
}
}
var testObj = new Obj("Hello,World!");
testObj.shout();
方法改进:
<script language="javascript">
/**//**//**//*
功能:修改 window.setTimeout,使之可以传递参数和对象参数
使用方法: setTimeout(回调函数,时间,参数1,,参数n)
*/
var __sto = setTimeout;
window.setTimeout = function(callback,timeout,param)...{
var args = Array.prototype.slice.call(arguments,2);
var _cb = function()...{
callback.apply(null,args);
}
__sto(_cb,timeout);
}
///测试代码
function aaaa(a)...{
alert(a);
}
function aaaaa(a,b,c)...{
alert(a + b + c);
}
var a = new Object();
window.setTimeout(aaaa,1000,a);
window.setTimeout(aaaaa,2000,a,6,7);
</script>
发表评论
-
IE7 下用 jQuery 获取页面滚动元素
2014-01-15 17:38 662引用IE7 下----------------$('html' ... -
修改 HTML JS CSS 等文件浏览器自动刷新
2014-01-04 16:46 4191引用如果我们厌烦了每次修改 HTML, JS, CSS 等文件 ... -
popup
2013-10-16 13:29 0new Date().getTime() -
浮动广告
2013-08-09 17:36 0$.fn.floatElement = function(op ... -
在 jQuery css, 和 animate 方法中自定义自己的属性
2013-04-11 16:42 1021$.cssHooks.xxx = { get: fun ... -
jquery 在firefox下不支持backgroundPositionY
2013-02-05 16:09 4143引用 在firefox下jquery的css方法不支持back ... -
javascript 取URL中的参数
2013-01-28 17:20 706var getParameter = function ... -
让firefox支持背景动画
2012-11-09 14:06 926// for supporting background- ... -
js 正则 连续匹配及g属性和lastIndex属性
2012-05-18 16:40 2598在firefox中运行如下代码会出现不是你期望的结果。 ... -
JavaScript Mouseover Mouseout
2012-03-26 13:49 1071有时候我们在使用 mouseover 和 mouseout 的 ... -
ajax
2010-11-11 16:08 865function getXMLHttpRequest( ... -
等待HTML DOM 的加载
2010-09-14 10:25 1258浏览器的渲染和操作顺序大致如下 HTML解析完毕 外部脚本 ... -
方法的链式调用
2010-09-13 13:43 899$函数。它通常返回一个HTML元素或一个HTML元素的集合,通 ... -
JavaScriopt中的范围
2010-01-05 14:26 1241// Set a global variable, foo,e ... -
匿名函数和闭包
2010-01-05 13:42 872var obj = document.getElementBy ... -
Array.prototype.slice.call自解
2008-12-18 12:56 1607引自:http://blog.guitarbean.com/2 ... -
JavaScript与函数式编程解释
2008-12-18 11:13 1073引自:http://www.jb51.net/article/ ... -
setTimeout setInterval
2008-12-18 10:17 925window对象有两个主要的定时方法,分别是setTimeou ... -
jquery基础语法
2008-12-04 10:34 3516转自别人的文章: 转自:http://blog.csdn.ne ...
相关推荐
注:调用过程中,可以使用clearTimeout(id_of_settimeout)终止 参数 描述 code 必需,要调用的函数后要执行的 JavaScript 代码串。 millisec 必需,在执行代码前需等待的毫秒数。 setTimeinterval ...
主要介绍了解决vue 使用setTimeout,离开当前路由setTimeout未销毁的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
setTimeout()从载入后延迟指定的时间去执行一个表达式或者是函数;仅执行一次 ;和window.clearTimeout一起使用.我在 代码如下:$(document).ready(function(){setTimout(test(),200); function test() { alert(1&#...
使用setTimeout()方法模拟进度条
JS中的setTimeout和setInterval的区别JS中的setTimeout和setInterval的区别JS中的setTimeout和setInterval的区别
在Javascript类中使用setTimeout
在Javascript里,setTimeout和setInterval接收第一个参数是一个字符串或者一个函数,当在一个对象里面用setTimeout延时调用该对象的方法时 代码如下: function obj() { this.fn = function() { alert(...
主要介绍了Vue中使用 setTimeout() setInterval()函数的问题 ,需要的朋友可以参考下
使用SetInterval和设定延时函数setTimeout 很类似。setTimeout 运用在延迟一段时间,再进行某项操作。
在node.js中可以使用node.js内置的setTimeout(callback,delayMillSeconds,[args])方法。当调用setTime()时回调函数会在delayMillSeconds后 执行.setTime() 会返回一个定时器对象ID,可以在delayMillSeconds到期前将...
NULL 博文链接:https://rainbow702.iteye.com/blog/1668935
js中的setInterval和setTimeout使用实例.docx
setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,而setInterval()则是在每隔指定的毫秒数循环调用函数或表达式,直到clearInterval把它清除。也就是说setTimeout()只执行一次,setInterval()可以执行多...
js中settimeout方法加参数的使用实例.docx
setTimeout,javascript 延时执行函数,闭包处理 利用javascript闭包处理延时操作
为了加强对JavaScript原生代码的编写能力,以及巩固setTimeout()的使用方法,制作了一个倒计时的demo,倒计时在现在的网站中算是一个常见的小功能,如果大家喜欢的话可以留下,就当作一个日常实用的小脚本。...
/****************************************************** // // 功能: 修改window.setTimeout,使之可以传递参数和对象参数 // 使用方法: window.setTimeout(回调函数,延迟时间,参数1,参数n) // ******************...
详解CocosCreator中几种计时器的使用方法 一、setTimeOut 3秒后打印abc。只执行一次。 setTimeout(()=>{console.... setTimeout这样写,test函数中输出的this是Window对象 @ccclass export default class Hell
javascript中setTimeout使用指南 [removed] /* //方法1 function slows(){ alert("15S后弹出!"); } setTimeout("slows()",5000); //方法2 function slows(){ alert("15S后弹出!"); } ...
使用javascript方法settimeout()函数来定时跳转页面。