JavaScript 原型及原型鏈,閉包——小記

參考資料,並強烈推薦:最詳盡的 JS 原型與原型鏈終極詳解,沒有「可能是」
知乎專欄:如何才能通俗易懂的解釋javascript裏面的‘閉包’?


原型:

所有對象的 _ proto _ 都指向其構造器的 prototype

var Person = {
    name: '',
    abc: function (){

    }
}
var person1 = new Person()
person1._proto_ === Person.prototype
Person.__proto__ === Function.prototype
Function.prototype.__proto__ === Object.prototype
Object.prototype.__proto__ === null // true

閉包:

把函數當類用,說是閉包,其實也可以叫封裝
閉包:在爺爺的環境中執行了爸爸,爸爸中返回了孫子,本來爸爸被執行完了,爸爸的環境應該被清除掉,但是孫子引用了爸爸的環境,導致爸爸釋放不了。
這一坨就是閉包。
簡單來講,閉包就是一個引用了父環境的對象,並且從父環境中返回到更高層的環境中的一個對象。

function foo() {
    var a = 2;
    return function bar() {
        console.log(a)
    }
}
var baz = foo();
baz(); //2
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章