javascript-----原型與原型鏈(積累)

(一)函數對象

  • 所有引用類型(函數,數組,對象)都擁有__proto__屬性(隱式原型)
  • 所有函數擁有prototype屬性(顯式原型)(僅限函數),這個屬性指向函數的原型對象,這個對象稱爲函數的原型。並且這個屬性是一個對象數據類型的值
  • 原型對象:擁有prototype屬性的對象,在定義函數時就被創建

在JavaScript中,創建一個函數A(就是聲明一個函數), 那麼瀏覽器就會在內存中創建一個對象B,這個對象B就是函數A的原型對象,簡稱函數的原型。這個原型對象B 默認會有一個屬性 constructor 指向了這個函數A ( 意思就是說:constructor屬性的值是函數A )。

function Tiger(){ }
Tiger.prototype  // {constructor: ƒ}

在這裏插入圖片描述
打開window自帶的畫圖工具:(win+R)cmd->mspaint
構造函數與實例之間的關係
在這裏插入圖片描述

(二)原型鏈
所有引用類型(函數,數組,對象)都擁有__proto__屬性,屬性值是指向當前實例所屬類的原型(prototype )。原型對象中有一個屬性constructor,它指向函數對象

function Tiger(){}
var tiger = new Tiger()
tiger.__proto__ === Tiger.prototype   // true
Tiger.prototype.constructor === Tiger   // true

在這裏插入圖片描述
Objectjs中所有對象數據類型的最頂的類。在Object.prototype上沒有__proto__屬性。即Object.prototype__proto__ === null

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章