为什么this指向死window而不是object

来源:9-19 网页尺寸scrollHeight

web_東

2019-08-04 19:16

var name = "The Window";
var object = {
    name : "My Object",
    getNameFunc : function(){
        return function(){
            return this.name;
        };
    }
};
console.log(object.getNameFunc());
//输出 this Window


写回答 关注

3回答

  • crush2020
    2020-10-29 10:48:54

    闭包,内部函数不能访问外部函数的this与argum,如果想要访问到,需要在外部函数保存this,使内部函数可以调用到。

    var name = "The Window";
    var object = {
        name : "My Object",
        getNameFunc : function(){
            let that = this
            return function(){
                return that.name;
            };
        }
    };
    console.log(object.getNameFunc());
    //输出 My ObjectMy


  • 慕仙9264919
    2020-04-12 15:53:33
    var name = "The Window";
    var object = {
        name : "My Object",
        getNameFunc : function(){
            return function(){
                return this.name;
            };
        }
    };
    console.log(object.getNameFunc());

    楼主你漏了一个括号,应该是object.getNameFunc()().可以等同于一个函数表达式,即

    var fun = object.getNameFunc();这里返回一个函数声明:

    function(){         

                return this.name;           

            } 

    fun();最后再调用fun();返回this.name

    当函数并非作为一个对象的属性而是被调用时,this被绑定到全局变量,即指向window。所以这里返回的this.name 不是对象中的name,而是window中的全局变量name,即The window。

  • weixin_慕运维8217716
    2019-08-14 17:04:18

    <script type="text/javascript">

        var name = "The Window"; 

        var object = {     

            name : "My Object",     

            getNameFunc : function(){         

                return this.name;           

            } 

        }; 

        document.write(object.getNameFunc()); 

    不是很懂?

    一如忘词

    /* * * 函数中的this的指向 * * * 普通函数中的this是谁?-----window * 对象.方法中的this是谁?----当前的实例对象 * 定时器方法中的this是谁?----window * 构造函数中的this是谁?-----实例对象 * 原型对象方法中的this是谁?---实例对象 * * * */

    2019-08-28 11:57:01

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468196 学习 · 21891 问题

查看课程

相似问题