js setTimeout中this问题求大神指教

varname='aaa';varobj={name:'bbb',output:function(){setTimeout(function(){console.log(... var name = 'aaa';
var obj = {
name: 'bbb',
output: function () {
setTimeout(function () {
console.log(this.name);
},0);
}
};
obj.output();//目前输出undefined
如上代码,为了使最后输出的结果为"bbb",出来把console.log(this.name);改为console.log(obj.name);还有什么方法么
展开
 我来答
eq279222
2017-03-02 · TA获得超过167个赞
知道小有建树答主
回答量:128
采纳率:0%
帮助的人:84.5万
展开全部
首先,你这里输出不是undefined,而是“aaa”
其次就你的问题,可以这么修改的,修改处代码如下:
setTimeout((function () {
console.log(this.name);
}).bind(this),0);
追问
是的是的,在浏览器下是aaa,我直接在webstorm中用node执行了,所以是undefined了
追答
.bind(this)那这里输出bbb的可是给你解决了?如若解决了,麻烦采纳下,谢谢
原来是禽兽灬
2017-03-02 · TA获得超过1836个赞
知道小有建树答主
回答量:568
采纳率:50%
帮助的人:362万
展开全部
var name = 'aaa';
    var obj = {
name: 'bbb',
output: function () {
(function(that){
setTimeout(function () {
    console.log(that.name);
},1000);
})(this);
}
    };
obj.output()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式