对象中的方法中的this不是指向对象本身嘛?


  var name = "The Window";
        
        var object = {
            name: "My Object",
            getNameFunc: function () {
                return function () {
                    return this.name;
                };
            }
        };
        alert(object.getNameFunc()());

对象中的方法中的this不是指向对象本身嘛?这里的this不是应该指向object吗?

在getNameFunc这层的时候this是指向当前对象的,但是你进到return 的时候 你返回的是个function,已经不在上下文中了,是个匿名块了,this就不是myObject了。关于this,其实理解起来比较复杂,不同的情况下指向都不一样。你可以找找相关的文章看看。

 
  var name = "The Window";
        var object = {
            name: "My Object",
            getNameFunc: function () {
                console.log(this.name);//这个时候还是My Object
                return function () {
                    return this.name; //这个时候this 是window对象了。
                };
            }
        };
        alert(object.getNameFunc()());

//如果还想用myObject 在return 定义的函数里可以用赋值的方式:

  var name = "The Window";
        var object = {
            name: "My Object",
            getNameFunc: function () {
                console.log(this.name);//这个时候还是My Object
                that = this;
                return function () {
                    //这样输出的就是myObject了。
                    return that.name; //这个时候this 是window对象了。
                };
            }
        };
        alert(object.getNameFunc()());

输出的不是"My Object"么

你调用了两次,第一次为obj调用,返回一个函数在全局,相当于第二次就是在全局调用了。
this在函数中是指向调用者的哟

分开来写你就知道了:
var a = object.getNameFunc();
a(); //也就是window.a()