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();
展开
 我来答
百度网友2571d37bb
2016-01-06 · 知道合伙人软件行家
百度网友2571d37bb
知道合伙人软件行家
采纳数:1971 获赞数:7905
前端工程师

向TA提问 私信TA
展开全部
定义和用法:
    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>
老唐100
2013-03-07 · TA获得超过308个赞
知道小有建树答主
回答量:180
采纳率:0%
帮助的人:155万
展开全部
当是使用window.setTimeout,或者是使用window.setInterval 时,函数中的this已经不是当前的ok这个了,而是window对象。

你的ok对象里的c函数应该改成如下:

this.c = function(){
var obj = this;
setTimeout(function(){
obj.b();
},1000);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
邢富鹏
2013-03-07 · TA获得超过209个赞
知道小有建树答主
回答量:285
采纳率:62%
帮助的人:162万
展开全部
<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就正确了
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
龘龑龘龑
2013-03-07 · 超过18用户采纳过TA的回答
知道答主
回答量:72
采纳率:100%
帮助的人:48.9万
展开全部
var o =new ok();你漏了var吧?
感觉你问的不是这个。应该是为什么最终会显示undefined吧?
setTimeout第一参数指的是一句代码字符串 而不是 一个对象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-03-07
展开全部
不要用this 你这里面this用法是错的 直接用局部变量var a, var b就可以了
追问
我现在目的是定义一个类,然后通过setTimeout来访问里面的成员。
追答
那访问时用ok.a和ok.b调用试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式