思考题(闭包)

Posted qtbb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了思考题(闭包)相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>

  <body>
    <script>
      // 思考题 1:

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

      console.log(object.getNameFunc()());
      // var f = object.getNameFunc();
      // 类似于
      // var f = function() {
      //     return this.name;
      // }
      // f();  //指向 window

      // 思考题 2:

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

      // 类似于
      //   var f = object.getNameFunc();
      //   f = function() {
      //     return that.name;
      //   };
      //   f();  // 指向object对象
    </script>
  </body>
</html>

 

以上是关于思考题(闭包)的主要内容,如果未能解决你的问题,请参考以下文章

let块级引起的闭包思考

两道关于JS的小考题(闭包与中间件)

思考题(闭包)

9.装饰器

setTimeOut和闭包

C#由变量捕获引起对闭包的思考