(一)函數對象
- 所有引用類型(函數,數組,對象)都擁有
__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
Object
是js
中所有對象數據類型的最頂的類。在Object.prototype
上沒有__proto__
屬性。即Object.prototype__proto__ === null