javascript在闭包中使用this对象

来源:互联网 发布:部落冲突苍蝇升级数据 编辑:程序博客网 时间:2024/05/22 02:29

在闭包中使用this对象会导致一些问题,this对象在运行时是基于函数的执行环境绑定的:在全局环境下,this等于window,当函数被作为某个对象的方法调用时,this指向这个对象。匿名函数的执行环境具有全局性。在闭包中使用this可能会出现非预期的结果。

var name="window";        var obj={            name:"object",            getname:function(){                return function(){                    return this.name;                    }                }            }    alert(obj.getname())   //***返回function(){return this.name;}    alert(obj.getname()())  //返回 "window"

为作对比,我在*标记出加了一句代码。这句代码返回一句function函数。再看最后一句,obj.getname()()是对上一句返回函数的执行,由于obj.getname()返回的是个匿名函数,在执行obj.getname()()时,相当于在全局环境下,定义了一个函数:
var newfunction = function(){
return this.name;
}
这种情况下this自然指向的是全局环境中的name。

原创粉丝点击