對https://mp.weixin.qq.com/s/HHm7dbcjXsChXVrSy6kVmg的總結(jié):
知道一點前提
1.一個實例a你辣,由構(gòu)造函數(shù)A創(chuàng)建:
- a.constructor === A
- a._proto_ === A.prototype
- A.prototype.constructor === A
2.普通對象冈涧、函數(shù)對象:
(1)定義
函數(shù)對象:
function func1(){}
const func2 = function(){}
const func3 = new Function()
普通對象:
const obj1 = {}
const obj2 = new Object()
const obj3 = new func1() //object7徘啊!吮龄!
要注意的一點: Object迅细、Function
是javaSciprt內(nèi)置的函數(shù)對象 ,函數(shù)對象畅铭!所以O(shè)bject的原型指向的是Funciton的原型對象菠隆!
(2)指向:
- 函數(shù)對象:
A._proto_ === Function.prototype
-普通對象:
A._proto_ === Object.prototype
原型鏈:
在查找實例某一個屬性時兵琳,如果不存在,就是從實例開始順著_proto_屬性往上找浸赫,先找構(gòu)造函數(shù)的原型對象上有沒有闰围,如果沒有就往構(gòu)造函數(shù)的原型對象的原型上繼續(xù)找,一直到Object的原型對象既峡,如果也沒有就返回undefined