javascript this的问题

奇乐二二二 2012-03-31 10:37:55
var a = {b:1, c:2, k:function(){alert(this.b)}}
setTimeout(a.k, 1000);

传递a.k过去之后, k里面的this指向window了,apply方法可以改变this的指向,但是能不能通过改变a.k参数的方法来固定k方法里面的this固定指向a
...全文
96 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
汉尼拔 2012-04-01
  • 打赏
  • 举报
回复
关于自己写个方法, 我再补充一下吧

这点也有两种方法, 你估计喜欢第一种, 所以只讲第一种


Function.prototype.createDelegate = function(param, scope){
var me = this;
return function(){
me.call(scope, param);
};
}


var a = {b:1, c:2, k:function(param){alert(param);alert(this.b)}}
setTimeout(a.k.createDelegate('ddd', a), 1000);

Acesidonu 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
setTimeout("a.k()", 1000)
[/Quote]
++
汉尼拔 2012-04-01
  • 打赏
  • 举报
回复
自己写一个方法, 或者

setTimeout(function(){
...
}, 1000)
还在加载中灬 2012-04-01
  • 打赏
  • 举报
回复
setTimeout("a.k()", 1000)
奇乐二二二 2012-04-01
  • 打赏
  • 举报
回复
那在setTimeout(a.k, 1000);里面如何把参数加进去呢
未知数 2012-04-01
  • 打赏
  • 举报
回复
setTimeout(function()
{
a.k('test'); //要调什么函数,传什么参数随便写
}, 1000);

至于this的指向,通过a的方法调用的,this指向对象a
freedom_gooboy 2012-03-31
  • 打赏
  • 举报
回复

var a = {b:1, c:2, k:function(dd){alert(this.b=dd)}}
a.k(a.b); 1

a.k(a) //输出object object

可以用传参的方式来显示,要获取的值,从a.k(a)说明this指向了a这个对象

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧