function tabMarquee(obj,count){
_this = this;
_this.obj = obj;
_this.count = count;
_this.time = 3000; //停留的时间
_this.n = 0;
var t;
this.slider = function(){
$(_this.obj + " .menu li").bind("mouseover",function(event){
$(event.target).addClass("current").siblings().removeClass("current");
var index = $(_this.obj + " .menu li").index(this);

$(_this.obj + " .content-main .content").eq(index).show().siblings().hide();
_this.n = index;
})
}

this.addHover = function(){
$(_this.obj).hover(function(){
clearInterval(t);
},function(){
t = setInterval(_this.autoPlay,_this.time);
})
}
this.autoPlay = function(){
_this.n = _this.n >=(_this.count-1) ? 0 : ++_this.n;
$(_this.obj + " .menu li").eq(_this.n).trigger("mouseover");
}
this.factory = function(){
this.slider();
this.addHover();
t = setInterval(this.autoPlay,_this.time);
}
this.factory();
}        _this = this;
_this.obj = obj;
_this.count = count;
_this.time = 3000; //停留的时间
_this.n = 0;
请问这部分的 _this =this是什么意思啊 然后函数前也加this又是什么意思》

解决方案 »

  1.   


    _this = this//将当前的对象的引用赋值给_this,也就是说明一个作用域的问题,在javascript中下划线一般说明该成员是私有的,但是在javascript中根本没有作用域之分,这个只是提醒程序员应该将这个成员看作是私有的。函数前加_this,其实也没有必要加,只是为了代码的可阅读性。你也可以将这个方法看作是一个"内部类"。
      

  2.   

    是为了在匿名函数中访问到tabMarquee中的属性,匿名函数中的this不一定能沿作用域链访问到上层函数属性,所有就把this保存为一个变量,让匿名函数访问这个变量就可以了
      

  3.   


    var _this=this;//这是主要是为了一些因为作用域访问不到的方法而备用的
    $(_this.obj + " .menu li").bind("mouseover",function(event){
                //在这里面,如果在外部不定义那一个_this;你在这里面直接使用this的话,通通指向了
    $(_this.obj + " .menu li")对象集合中的子对象了
     
            })
      

  4.   

    因为需要用到匿名函数,定义方法的时候一般用一个匿名函数定义,在匿名函数中使用this就存在this在闭包中指向不明的问题了