JavaScript闭包作用域与this

    <script>
        var name = "window";
        var person = {
            name:"zhangsan",
            age:23,
            say:function(){
                return function(){
                    return this.name;
                }
            }
        }
        /**
         * 当完成person.say()之后,这个函数就调用结束了,在这个函数调用结束之前
         * this是指向person,但是在调用匿名函数的时候,this就指向了window,所以
         * 得到的结果是window。
         */
       alert(person.say()());
    </script>

解决:

    <script>
        var name = "window";
        var person = {
            name:"zhangsan",
            age:23,
            say:function(){
                var that = this;
                return function(){
                    return that.name;
                }
            }
        }
       alert(person.say()());
    </script>


你可能感兴趣的:(JavaScript闭包作用域与this)