原型鏈(三句話搞定原型鏈)


首先:圖上的三列分別表示實例、構造函數、原型對象。bash

一、實例:經過構造函數new出來的一個對象。函數

      

function Person(name){
    this.name=name
}
var person1=new Person("nanxin") //這裏的 person1 就是實例
複製代碼

二、構造函數:經常用大寫字母開頭,好比  function Person()學習

function Person(name){
    this.name=name
}複製代碼

三、原型對象:也就是prototype對象。this

好比:Object.prototype      Function.prototype    Person.Prototype
這些都是本文中所說的的prototype對象。複製代碼


那三句話是什麼呢?spa

1、每一個實例的__proto__指向該實例構造函數的prototype對象。prototype

//栗子1:
function Person(name){
    this.name=name
}
var person1=new Person("nanxin")

//由於person1的構造函數是 Person,因此
person1.__proto__===Person.prototype  //true
複製代碼

2、構造函數也屬於函數,因此構造函數的__proto__指向Function.prototype。code

//栗子2:
function Person(name){
    this.name=name
}

Person.__proto__===Function.prototype //true


//栗子3:
//Function也是構造函數,是否是超級神奇!
Function.__proto__===Function.prototype   //true
//記住這口訣,你就無敵了!複製代碼

3、原型對象本質上也是對象,屬於Object的實例,因此原型對象的__proto__指向Object.prototype。(除了Object.prototype.__proto__===null)cdn

//栗子4:
Function.prototype.__proto__===Object.prototype   //true

//栗子5:
function Person(name){
    this.name=name
}
Person.prototype.__proto__===Object.prototype   //true複製代碼

最後就是Object.prototype的__proto__指向null。這是特例。對象

Object.prototype.__proto__===null  //true複製代碼

說的很精簡,可是記住這三句對咱們學習原型鏈真的頗有幫助!blog

有問題歡迎留言!

相關文章
相關標籤/搜索