码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript中匿名函数this指向问题

时间:2019-03-08 23:47:17      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:OLE   nbsp   person   asc   解决方法   作用域   pre   匿名   UNC   

this对象是在运行时基于函数执行环境绑定的,在全局函数中,this=window,在函数被作为某个对象的方法调用时,this等于这个对象。

但是匿名函数的执行环境是全局性的,所以匿名函数的this指向是window

    var name = ‘window‘
    var person = {
        name :‘Alan‘,
        sayName:function () {
            return function () {
                console.log(this.name)
            }
        }
    }
    person.sayName()()  // window 

这里sayName方法return了一个匿名函数,这个匿名函数中this指向window

解决方法还是有的,我们可以把外部作用域的this传递给匿名函数

 

    var name = ‘window‘
    var person = {
        name :‘Alan‘,
        sayName:function () {
            var that = this
            return function () {
                console.log(that.name)
            }
        }
    }
    person.sayName()()  // Alan

JavaScript中匿名函数this指向问题

标签:OLE   nbsp   person   asc   解决方法   作用域   pre   匿名   UNC   

原文地址:https://www.cnblogs.com/showcase/p/10498790.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!