By XFE-堪玉javascript
如下知識來源於對王福朋所寫《深刻理解javascript原型和閉包》的理解和整理java
一切都是對象[引用類型],對象都是經過函數建立的[Funcion類型]閉包
對象是屬性的集合,所以屬性中的方法其實也是屬性的一種函數
函數也是一種對象,所以也是屬性的集合,能夠對其進行自定義屬性this
每一個函數都有一個屬性prototype,屬性值爲一個對象——原型對象prototype
每一個對象都有一個隱式__proto__屬性,指向建立該對象的函數的prototype指針
原型對象默認只有一個constructor的屬性,指向函數自己對象
Function內置對象的__proto__指向了自身的Prototype,被自身建立繼承
自定義或內置函數的prototype本質上和var obj={}同樣的Object實例,都是被Object建立,所以根據語言的繼承特性,默認原型都會包含一個內部指針,指向Object.prototype,所以Object.prototype裏的全部屬性和方法被理所應當的繼承了下來ip
執行上下文激活至關於代碼的"前期準備工做",是在被調用時建立的,其數據內容包括:
函數每被調用一次,都會產生一個新的執行上下文環境,執行完後上下文環境即被銷燬
做用域是在函數建立時就產生的,同一個做用域下可能同時存在不一樣的執行上下文
在函數中this到底取何值,是在函數真正被調用執行的時候肯定的,函數定義的時候肯定不了
處於活動狀態的執行上下文環境只有一個,其實這是一個壓棧出棧的過程——執行上下文棧
在當前做用域中使用,卻沒在當前做用域中建立的變量爲自由變量
對於自由變量的取值,要到建立這個函數的那個做用域中取值——是「建立」,而不是「調用」