關(guān)于閉包的一些講解

廖雪峰:https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/00143449934543461c9d5dfeeb848f5b72bd012e1113d15000#0

阮一峰:http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html

一個PPT:https://www.gracecode.com/posts/2385.html

MDN上的一個例子:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

其中對于this的解釋:https://www.quirksmode.org/js/this.html

要理解的兩個例子:

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

軒脈刃 說:
理解最后兩個例子:
1 函數(shù)中的this指的是調(diào)用這個函數(shù)的owner
2 object.getNameFunc()是返回一個函數(shù),并沒有執(zhí)行函數(shù)中的代碼
3 增加一個例子0:

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

4 把例子1變成

  var name = "The Window";
  var object = {
    name : "My Object",
    getNameFunc : function(){
      return function(){
        return this.name;   //這個this是有上下文的限制的
      };
    }
  };

var tmp = Object.getNameFunc(); //此時沒有執(zhí)行this.name
var name = tmp();//這個時候才執(zhí)行,這時候的this上下文為全局
alert(name);
//alert(object.getNameFunc()())
5 把例子2變成:

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

var tmp = Object.getNameFunc(); //這個時候執(zhí)行了that = this,這里的this上下文是object,所以that指的是object
var name = Object.getNameFunc(); //這個時候執(zhí)行了that.name
alert(name);
//alert(object.getNameFunc()());

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容