javascript this的问题
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
------解决方案--------------------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这个对象
------解决方案--------------------setTimeout("a.k()", 1000)
------解决方案--------------------自己写一个方法, 或者
setTimeout(function(){
...
}, 1000)
------解决方案--------------------
------解决方案--------------------关于自己写个方法, 我再补充一下吧
这点也有两种方法, 你估计喜欢第一种, 所以只讲第一种
JScript code
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);
------解决方案--------------------
setTimeout(function()
{
a.k('test'); //要调什么函数,传什么参数随便写
}, 1000);
至于this的指向,通过a的方法调用的,this指向对象a