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

解决方案 »

  1.   


    var a = {b:1, c:2, k:function(dd){alert(this.b=dd)}}
    a.k(a.b);   1a.k(a)  //输出object object可以用传参的方式来显示,要获取的值,从a.k(a)说明this指向了a这个对象
      

  2.   

    那在setTimeout(a.k, 1000);里面如何把参数加进去呢
      

  3.   

    自己写一个方法, 或者setTimeout(function(){
    ...
    }, 1000)
      

  4.   

    关于自己写个方法, 我再补充一下吧这点也有两种方法, 你估计喜欢第一种, 所以只讲第一种
    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);
      

  5.   

    setTimeout(function()
      { 
        a.k('test'); //要调什么函数,传什么参数随便写
      }, 1000);至于this的指向,通过a的方法调用的,this指向对象a