原型鏈

  • 原型鏈

    • 函數(shù)的原型對(duì)象prototype

    函數(shù)都有prototype屬性指向函數(shù)的原型對(duì)象【只有函數(shù)根除外】

    • 原型對(duì)象的構(gòu)造函數(shù)constructor
    • 內(nèi)部原型(__proto__),原型鏈就是通過這個(gè)來完成的
    1. 所有對(duì)象都有__proto__屬性(非標(biāo)準(zhǔn)屬性,但是所有瀏覽器都實(shí)現(xiàn)了)【null除外】
    2. Object是構(gòu)造函數(shù),也是對(duì)象,Object的prototype是所有對(duì)象的根。
    3. Function是函數(shù)對(duì)象的構(gòu)造函數(shù)。Function的原型對(duì)象是所有函數(shù)的根,而它的內(nèi)部原型是Object的原型對(duì)象,這是關(guān)鍵
  1. f對(duì)象的__proto__內(nèi)部原型指向了Object的構(gòu)造函數(shù)原型對(duì)象,對(duì)象實(shí)例就可以訪問原型對(duì)象上的方法

Object === Object.prototype.constructor //==>true

  1. 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í)作用域
    • 閉包的使用
    • 沙箱模式
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是原型語言 只有對(duì)象,沒有類;對(duì)象繼承對(duì)象,而不是類繼承類。 “原型對(duì)象”是核心概念。原型對(duì)象是新對(duì)象的模板,...
    zhoulujun閱讀 2,451評(píng)論 0 12
  • JS中原型鏈,說簡(jiǎn)單也簡(jiǎn)單。 首先明確: 函數(shù)(Function)才有prototype屬性,對(duì)象(除Object...
    前小白閱讀 4,071評(píng)論 0 9
  • 原型鏈?zhǔn)且环N機(jī)制,指的是 JavaScript 每個(gè)對(duì)象都有一個(gè)內(nèi)置的 __proto__ 屬性指向創(chuàng)建它的構(gòu)造函...
    劼哥stone閱讀 4,573評(píng)論 15 80
  • 在JavaScript中,原型鏈作為一個(gè)基礎(chǔ),老生長(zhǎng)談,今天我們就來深入的解讀一下原型鏈。 本章主要講的是下面幾點(diǎn)...
    Devinnn閱讀 1,499評(píng)論 1 6
  • 一轉(zhuǎn)眼,已經(jīng)過去四個(gè)月時(shí)間了,這次我們算是一個(gè)階段性的復(fù)盤吧。真心感謝班長(zhǎng)以及組長(zhǎng)對(duì)這個(gè)班級(jí)的付出。 對(duì)...
    悅享同學(xué)閱讀 226評(píng)論 0 0

友情鏈接更多精彩內(nèi)容