javascript在闭包中使用this对象

在闭包中使用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。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值