
JS中setTimeout无法调用类成员是怎么回事?
functionok(){this.a=10;this.b=function(){alert(this.a)}this.c=function(){setTimeout(t...
function ok()
{
this.a=10;
this.b=function()
{
alert(this.a)
}
this.c=function()
{
setTimeout(this.b,1000);
}
}
o=new ok();
o.c(); 展开
{
this.a=10;
this.b=function()
{
alert(this.a)
}
this.c=function()
{
setTimeout(this.b,1000);
}
}
o=new ok();
o.c(); 展开
展开全部
定义和用法:
setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。
语法:
setTimeout(code,millisec)
参数描述:
code 必需。要调用的函数后要执行的 JavaScript 代码串。
millisec 必需。在执行代码前需等待的毫秒数。
提示和注释:
提示:setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。
实例:
<html>
<head>
<script type="text/javascript">
function timedMsg()
{
var t=setTimeout("alert('5 seconds!')",5000)
}
</script>
</head>
<body>
<form>
<input type="button" value="Display timed alertbox!"
onClick="timedMsg()">
</form>
<p>Click on the button above. An alert box will be
displayed after 5 seconds.</p>
</body>
</html>
展开全部
当是使用window.setTimeout,或者是使用window.setInterval 时,函数中的this已经不是当前的ok这个了,而是window对象。
你的ok对象里的c函数应该改成如下:
this.c = function(){
var obj = this;
setTimeout(function(){
obj.b();
},1000);
}
你的ok对象里的c函数应该改成如下:
this.c = function(){
var obj = this;
setTimeout(function(){
obj.b();
},1000);
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<script>
function ok()
{
this.a=10;
this.b=function()
{
alert(o.a);
alert(this.a)
}
this.c=function()
{
setTimeout(this.b,1000);
}
}
o=new ok();
o.c();
</script>
调用了 应该这样写 变量的作用域不应该用this.a 用o.a就正确了
function ok()
{
this.a=10;
this.b=function()
{
alert(o.a);
alert(this.a)
}
this.c=function()
{
setTimeout(this.b,1000);
}
}
o=new ok();
o.c();
</script>
调用了 应该这样写 变量的作用域不应该用this.a 用o.a就正确了
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var o =new ok();你漏了var吧?
感觉你问的不是这个。应该是为什么最终会显示undefined吧?
setTimeout第一参数指的是一句代码字符串 而不是 一个对象
感觉你问的不是这个。应该是为什么最终会显示undefined吧?
setTimeout第一参数指的是一句代码字符串 而不是 一个对象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-03-07
展开全部
不要用this 你这里面this用法是错的 直接用局部变量var a, var b就可以了
追问
我现在目的是定义一个类,然后通过setTimeout来访问里面的成员。
追答
那访问时用ok.a和ok.b调用试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询