閉包和原型鏈

2022-09-17 21:24:16 字數 833 閱讀 9819

閉包:

簡單的理解就是:閉包就是能夠讀取其他函式內部變數的函式,它兩個最大的用處:

①可以讀取函式內部的變數,

②讓變數的值始終保持在記憶體中。閉包與它的詞法環境綁在一起,因此閉包讓我們能夠從乙個函式內部訪問其外部函式的作用域 。

閉包特點:函式a巢狀函式b , 函式b能訪問函式a的變數 , 最後返回函式b;   (函式b就是閉包)

閉包的優缺點:

優點:有利於封裝,可以訪問區域性變數

缺點:一直留在記憶體中,浪費記憶體,有可能發生記憶體洩漏

原型鏈:

當呼叫乙個物件的屬性時 , 如果自身物件未找到 , 會去物件的__proto__屬性(隱式原型物件)裡去找 ,  (這裡的隱式原型物件指向的就是它建構函式的prototype(顯示原型物件))

然後原型本身也是乙個物件 , 擁有__proto__ 屬性 , 所以會繼續向上查詢 ,一直找到object.prototype.proto===null   這樣的鏈條稱之為原型鏈

原型鏈的個人理解:

thing是thing2的例項.

thing的__proto()__指向thing2的prototype

thing2的原型物件 = thing1的例項物件,

new thing1()的__proto__指向thing1的prototype.

在thing1的prototype裡找到了foo屬性

閉包 原型 原型鏈

1.閉包 函式內部的函式 2.優點 1.隔離作用域,防止汙染全域性 2.有自己的獨立變數 3.快取 3.缺點 1.不容易垃圾 2.消耗記憶體 4.原型 1.函式有乙個prototype物件,可以通過函式的原型物件來實現繼承 2.原型prototype物件上有乙個constructor屬性。是建構函式...

閉包封裝之 原型鏈

原型鏈的學習 1 function myobject 2function myobjectex 3 構造2的原型設定為構造1的例項 4 myobjectex.prototype new myobject 導致原型鏈錯誤,需要維護 5var obj1 new myobject 6var obj2 ne...

閉包 原型鏈 js繼承 jie

閉包是由什麼構成?閉包 函式 詞法作用域 詞法作用域 即以變數宣告定義的位置為參照,如果當前位置沒有定義,就會訪問父級定義的位置 廣義上閉包 var a 1000 function fn1 fn1 平時工作中用到的閉包狹義上閉包 1.函式內巢狀函式 2.子級函式引用了父級函式的相關變數 狹義上閉包應...