Loading

闭包题目

//题目一
  var name = "The Window";
  var object = {
    name: "My Object",
    getNameFunc: function () {
      return function () {
        return this.name;
      };
    }
  };
  console.log(object.getNameFunc()());  //直接调用,默认调用对象是window

答案:the window

 

题目二:

 //代码片段二
  var name2 = "The Window";
  var object2 = {
    name2: "My Object",
    getNameFunc: function () {
      var that = this;
      return function () {
        return that.name2;
      };
    }
  };
  console.log(object2.getNameFunc()()); //修改了this = that,说明this指的是getName

答案:the Object

题目三:

/*
   说说它们的输出情况
   */

  function fun(n, o) {
    console.log(o)
    return {
      fun: function (m) {
        return fun(m, n)
      }
    }
  }
  var a = fun(0)
  a.fun(1);//fun(1,0)
  a.fun(2)
  a.fun(3) //undefined,?,?,?

  var b = fun(0).fun(1).fun(2).fun(3) //undefined,?,?,? 链式闭包
//先执行fun(0)返回一个闭包.fun(1)==fun(1,0)
//fun(1,0).fun(2)==fun(2,1)
//fun(2,1).fun(3)==fun(3,2)
var c = fun(0).fun(1)//fun(1,0) c.fun(2)//fun(2,1) c.fun(3) //undefined,?,?,?
//答案:
//a: undefined,0,0,0
//b: undefined,0,1,2
//c: undefined,0,1,1
posted @ 2021-02-23 12:54  兜里还剩五块出头  阅读(77)  评论(0编辑  收藏  举报