最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談javascript的閉包

 更新時(shí)間:2017年01月23日 16:02:39   作者:amsolbfengfeng  
本文介紹了javascript閉包的相關(guān)知識。具有很好的參考價(jià)值,下面跟著小編一起來看下吧

關(guān)于閉包的解釋

我們將作用域鏈描述為一個(gè)對象列表,不是綁定的棧。每次調(diào)用javascript函數(shù)的時(shí)候,都會為之創(chuàng)建一個(gè)新的對象來保存變量,把這個(gè)對象添那個(gè)加至作用域中,當(dāng)函數(shù)返回時(shí),就從作用域鏈中將這個(gè)綁定變量的對象刪除,如果不存在嵌套函數(shù),也沒有其他引用指向這個(gè)綁定的對象,它就會被當(dāng)垃圾回收掉,

 (function () {
 var val = null;
 var callback;
 setTimeout(function () {
  val = 1;
  callback(val)
 },1000)
 window.getVal = function(fn){
  callback = fn;
 }
 })();
 (function(){
 var b =3;
 getVal(function (val) {
  console.log(val);//1
  console.log(b); //3
 getVal(function (val) {
 console.log(val);
 console.log(b); //這里為什么還能打印出b這個(gè)變量呢/. 
 });
 //這里匿名函數(shù)其實(shí)就是一個(gè)閉包,你就相當(dāng)于通過getVal函數(shù)把這個(gè)閉包傳遞出去了,你想想看,閉包是不是這樣?
})();
//2作用域
 (function(){
 var b =3;
 var ret = function (val) {
  console.log(val);

利用閉包實(shí)現(xiàn)的私有屬性存取方法

 function c     
  return {
  count:function(){
  return n++;
  }
  };
  }
 var a=counter();
 alert(a.count());//返回的0;
 alert(a.count());//返回的是1;

定義的閉包實(shí)現(xiàn)的私有屬性方法

function addPrivateProperty(o,name,predicate){
var value;
o["get"+name]=function(){return value);}//get 存取器的屬性只讀,將其直接簡單的返回
//setter方法檢驗(yàn)值是否合法,若不合法就拋出異常
o["set"+name]=function(v){{
if(predicate&&!predicate(v)) throw Error("");
else {
value=v;
}
}

典型錯(cuò)誤

function constfuncs(){
var funcs=[];
for(var i=0;i<10;i++){
funcs[i]=function(){return i;};
}
return funcs;
}
var func=constfuncs();
console.log(func[5]());
;//返回值? 10

由于此函數(shù)的閉包都是在同一個(gè)函數(shù)調(diào)用中定義的,因此可以共享變量i;

關(guān)聯(lián)到閉包的作用域鏈都是活動的,嵌套的函數(shù)不會將作用域內(nèi)的私有成員復(fù)制一份,也不會對所綁定的變量生成靜態(tài)快照;在閉包時(shí)后this是javascript的一個(gè)關(guān)鍵字而不是變量

解決辦法

function Bb(){
this.run=function(){}//this就是Bb這個(gè)對象;
}
而function run(){
function gg(){alert(this就是window)}//this就是window;`
}

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • webpack打包js的方法

    webpack打包js的方法

    這篇文章主要介紹了webpack打包js的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • 基于cssSlidy.js插件實(shí)現(xiàn)響應(yīng)式手機(jī)圖片輪播效果

    基于cssSlidy.js插件實(shí)現(xiàn)響應(yīng)式手機(jī)圖片輪播效果

    cssSlidy是一款支持手機(jī)移動端的焦點(diǎn)圖輪播插件,支持標(biāo)題設(shè)置,滑動動畫,間隔時(shí)間等。這篇文章主要基于cssSlidy.js插件實(shí)現(xiàn)響應(yīng)式手機(jī)圖片輪播效果,
    2016-08-08
  • 深入理解JavaScript函數(shù)參數(shù)(推薦)

    深入理解JavaScript函數(shù)參數(shù)(推薦)

    這篇文章主要介紹了深入理解JavaScript函數(shù)參數(shù)(推薦)的相關(guān)資料,需要的朋友可以參考下
    2016-07-07
  • javascript 網(wǎng)頁進(jìn)度條簡單實(shí)例

    javascript 網(wǎng)頁進(jìn)度條簡單實(shí)例

    這篇文章主要介紹了javascript 網(wǎng)頁進(jìn)度條簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 微信企業(yè)號開發(fā)之微信考勤Cookies的使用

    微信企業(yè)號開發(fā)之微信考勤Cookies的使用

    使用微信考勤,每次使用微信企業(yè)號開發(fā):微信用戶信息和web網(wǎng)頁的session的關(guān)系這個(gè)里邊的方法,調(diào)用微信的接口,有點(diǎn)慢,微信官方也推薦使用Cookies,但如何使用Cookies,自己卻一直沒有搞清楚。下面小編幫大家解決難題,需要的朋友可以參考下
    2015-09-09
  • 舉例說明javascript冒泡排序

    舉例說明javascript冒泡排序

    這篇文章主要為大家介紹了javascript冒泡排序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • D3.js入門之D3?DataJoin的使用

    D3.js入門之D3?DataJoin的使用

    DataJoin(數(shù)據(jù)連接)是D3中很重要的一個(gè)概念。D3是基于數(shù)據(jù)操作DOM的js庫,DataJoin使我們能夠根據(jù)現(xiàn)有?HTML?文檔中的數(shù)據(jù)集注入、修改和刪除元素。本文主要和大家詳細(xì)聊聊DataJoin的使用,感興趣的可以學(xué)習(xí)一下
    2022-11-11
  • 前端通過表單將pdf等文件傳入后端

    前端通過表單將pdf等文件傳入后端

    在一些情境下,用戶通過瀏覽器上傳word、excel、pdf等各種類型的文件到系統(tǒng),上傳后可以隨時(shí)下載,下面這篇文章主要介紹了前端通過表單將pdf等文件傳入后端的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • 比較不錯(cuò)的函數(shù)式JavaScript編程指南教程

    比較不錯(cuò)的函數(shù)式JavaScript編程指南教程

    你是否知道JavaScript其實(shí)也是一個(gè)函數(shù)式編程語言呢?本指南將教你如何利用JavaScript的函數(shù)式特性。
    2008-05-05
  • JavaScript讓IE瀏覽器event對象符合W3C DOM標(biāo)準(zhǔn)

    JavaScript讓IE瀏覽器event對象符合W3C DOM標(biāo)準(zhǔn)

    IE瀏覽器event對象跟W3C實(shí)現(xiàn)的不一樣.所以自己封裝一個(gè)EventUtil類來讓IE瀏覽器的event對象與W3C一樣.
    2009-11-11

最新評論

瑞安市| 涿州市| 龙山县| 六枝特区| 麦盖提县| 中阳县| 武陟县| 苗栗县| 博罗县| 新龙县| 惠来县| 宁夏| 灵璧县| 漾濞| 都昌县| 资溪县| 凉城县| 革吉县| 泊头市| 洪泽县| 顺昌县| 舒城县| 贵南县| 策勒县| 晋宁县| 京山县| 江陵县| 奎屯市| 揭东县| 乌拉特后旗| 林口县| 大兴区| 万山特区| 梅州市| 吕梁市| 台江县| 安仁县| 永昌县| 宜章县| 麻江县| 正定县|