猿问

js的this使用中发现的一个耐人寻味的问题

1、首先我们来看一段代码

name = "The Window";

var object = {

  name : "My Object",

  getNameFunc : function(){

    return function(){

      return this.name;

    };

  }

};

代码运行之后,通过object.getNameFunc()()可以获取到this.name的值,有经验的大家肯定知道,结果是“The Window”。因为通过object获取getNameFunc()函数的返回值的过程就相当于(object.getNameFunc())()这样一个形式,那么return语句中的this指的也就是Window对象了,这个我可以理解。

2、接下来是另一段代码

name="The Window";

function object(){

    this.name = "My Object";

    return function(){

            return this.name;

    }

}

代码运行之后,同样如上(object())()以闭包的形式,获取this.name的值,但是得到的结果是“My Object”。都是对象都是函数嵌套,结果却截然不同,##求有答案的大神解惑!

波斯汪
浏览 420回答 1
1回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答