-
原型鏈
- 函數(shù)的原型對(duì)象
prototype
函數(shù)都有
prototype屬性指向函數(shù)的原型對(duì)象【只有函數(shù)根除外】- 原型對(duì)象的構(gòu)造函數(shù)
constructor - 內(nèi)部原型(
__proto__),原型鏈就是通過這個(gè)來完成的
- 所有對(duì)象都有
__proto__屬性(非標(biāo)準(zhǔn)屬性,但是所有瀏覽器都實(shí)現(xiàn)了)【null除外】 - Object是構(gòu)造函數(shù),也是對(duì)象,Object的
prototype是所有對(duì)象的根。 - Function是函數(shù)對(duì)象的構(gòu)造函數(shù)。Function的原型對(duì)象是所有函數(shù)的根,而它的內(nèi)部原型是Object的原型對(duì)象,這是關(guān)鍵
- 函數(shù)的原型對(duì)象
- f對(duì)象的
__proto__內(nèi)部原型指向了Object的構(gòu)造函數(shù)原型對(duì)象,對(duì)象實(shí)例就可以訪問原型對(duì)象上的方法Object === Object.prototype.constructor //==>true
Object的構(gòu)造函數(shù)的prototype屬性指向了Object原型對(duì)象,反過來Object原型對(duì)象也有個(gè)屬性constructor指向了Object的構(gòu)造函數(shù),就是一個(gè)相互的指向關(guān)系
2018-11-06_134048.png
2018-11-06_134234.png- 先搜索自己有沒有這個(gè)屬性,如果沒有就去構(gòu)造函數(shù)原型上找
函數(shù)為什么是對(duì)象,因?yàn)楹瘮?shù)的prototype的
__proto__指向Object的原型對(duì)象

原型鏈圖解
//以下是原型鏈
m.__proto__ === Dog.prototype
//==> true
Dog.prototype.__proto__ === Object.prototype
//==> true
Object.prototype.__proto__ === null
//==> true
構(gòu)造函數(shù)總結(jié)
構(gòu)造函數(shù)的私有屬性——指向——Function原型
Object總結(jié)
Object私有屬性指向——Function原型
私有屬性總結(jié)
實(shí) 例對(duì)象的私有屬性——指向——構(gòu)造函數(shù)原型
構(gòu)造函數(shù)原型的私有屬性——指向——Object原型
Object原型的私有屬性——指向——null
Function的私有屬性——指向——Function原型
Function原型的私有屬性——指向——Object原型
constructor屬性總結(jié)
原型的constructor屬性都指向——該函數(shù)
函數(shù)的 prototype 屬性都指向——該函數(shù)對(duì)應(yīng)的原型
//---以下是底層原型---
Dog.__proto__ === Function.prototype
//==> true
Function.prototype === Function.prototype
//==> true
Function.__proto__ === Function.prototype
//==> true
typeof Function.prototype
//==>function
Function.prototype
//==>f(){}
Function.prototype.__proto__ === Object.prototyoe
//==> true
// **所有的函數(shù)式Object對(duì)象的實(shí)例,也就是說函數(shù)也是個(gè)對(duì)象**
Object.__proto__ === Function.prototype
//==> true
- 閉包
- 函數(shù)的作用域:函數(shù)作用域與全局作用域
- 沒有塊級(jí)作用域
- 閉包的使用
- 沙箱模式

