鍍金池/ 問(wèn)答/Java  Python  HTML/ 始終搞不清的constructor是啥

始終搞不清的constructor是啥

Function.constructor === Function

請(qǐng)教大神 這是啥意思

回答
編輯回答
脾氣硬

1、所有函數(shù)都是Function的實(shí)例(不考慮箭頭函數(shù)),所以所有函數(shù)的[[prototype]]原型都指向Function.prototype。
2、每一個(gè)prototype對(duì)象都有1個(gè)constructor屬性指向構(gòu)造它的函數(shù)。
3、函數(shù)實(shí)例本身并沒(méi)有constructor屬性,便沿著原型鏈去尋找,直到發(fā)現(xiàn)Function.prototype內(nèi)有constructor屬性。
4、根據(jù)2,F(xiàn)unction.prototype.constructor指向Function。
5、可能奇怪的點(diǎn)在于Function本身也是Function的實(shí)例,F(xiàn)unction的[[prototype]]原型指向Function.prototype,設(shè)計(jì)者可能是為了保持函數(shù)特性一致而設(shè)計(jì)的,畢竟凡事必得有始有終嘛(跑。

2017年3月25日 20:26
編輯回答
膽怯

clipboard.png

可以簡(jiǎn)單理解成為誰(shuí)構(gòu)造了你,你的constructor就是誰(shuí),因?yàn)镕unction比較特殊,所以相當(dāng)于是自己構(gòu)造了自己

2017年4月14日 07:21
編輯回答
吢涼

constructor 屬性返回對(duì)創(chuàng)建此對(duì)象的數(shù)組函數(shù)的引用。

什么是引用呢 可以這么理解
js是基于對(duì)象的語(yǔ)言,在js里面一切皆對(duì)象,所有的變量實(shí)際上都是引用

所以聲明函數(shù) 他的constructor也就是Function的一個(gè)函數(shù)引用
這里Funtion 是一個(gè)類,類似Array,String,Number,Object 等的原型
而funtion 都是繼承了Funtion的屬性 和它并不相等

所以是相等關(guān)系
理解了引用可能會(huì)更好理解吧 建議買本書(shū)系統(tǒng)的學(xué)習(xí)一下

2017年4月29日 05:25
編輯回答
初心

可以看一下這篇文章,里面有詳細(xì)的介紹:https://segmentfault.com/a/11...

重點(diǎn)在于,constructor是原型指向構(gòu)造函數(shù)的一個(gè)屬性,在構(gòu)造函數(shù)中沒(méi)有這樣一個(gè)屬性而去原型鏈中查找,所以是

Function.constructor === Function.prototyoe.constructor

要記住這一點(diǎn),而不僅僅是

Function.constructor === Function
2018年1月20日 17:47
編輯回答
故林

所有構(gòu)造函數(shù)的原型的constructor屬性都指向其構(gòu)造函數(shù),又所有構(gòu)造函數(shù)都是Function這個(gè)構(gòu)造函數(shù)的實(shí)例,包括Function自己,所以Function.constructor = Function.prototype.constructor = Function.

2018年3月13日 21:37