不負(fù)相思意
2018-08-07 10:10:20
js中函數(shù)也是對象,但是對象也是函數(shù)構(gòu)造出來的?那么問題來了,js中先有對象還是函數(shù)呢?
1 回答

白衣染霜花
TA貢獻(xiàn)1796條經(jīng)驗 獲得超10個贊
誰說對象都是函數(shù)構(gòu)造出來的?
所有對象都不是函數(shù)構(gòu)造出來的!
對象是由JavaScript運行時環(huán)境以原型對象為模板,直接產(chǎn)生出來的。構(gòu)造函數(shù)只是以新生的對象為this,做一些初始化操作。
所以,不要以為var p = new Person()
說明了p是由Person產(chǎn)生的,其實是由Person.prototype產(chǎn)生的。
至于先有函數(shù)還是先有對象,這不是個問題。因為那些最基本的內(nèi)置對象,肯定是由JavaScript運行時環(huán)境直接生成的,不適用通常的對象產(chǎn)生規(guī)則。比如Object.prototype、Object、Function.prototype等,它們的產(chǎn)生沒有先后順序。有了這些基本對象后,就可以按照J(rèn)S的規(guī)則產(chǎn)生其他對象了。
個人觀點,僅供參考。要想知道真實情況,還是去讀一下V8源碼吧。
添加回答
舉報
0/150
提交
取消