Object()建構子可以看做是:var Object=new Function();
Array()建構子可以看做是:var Array=new Function();
.....那麼:
Function()建構子可以看做是:var Function=new Function()?
自己創建了自己?
還有類似的其他的一些原生對象,Object.prototype,作為原型鏈的終極原型對象,他是怎麼被創造出來的?難道也是new Object()創造出來的?但Object.prototype不應該是JS原生系統裡第一個物件嗎?
感覺已經無法理解JS的基於原型思想了,還請大神指點.......
其實不是雞生蛋蛋生雞的問題,所有的對像其實都是function,包括function自己;先說原型,原型基於構造函數和__proto__,並且這兩個包含於prototype,並且這三個一起組成了一個function;原型鏈基於__proto__的指向,原型鍊是自底向上,就近原則,查找想要的屬性,形成原型鏈;所以js是模擬的語言,這也是它和其他語言的本質區別!
可以透過new來產生物件(函數)跟所有的物件(函數)都需要透過new來產生是不一樣的。
Function,Object等可以認為是js實現的過程中提供的,我的理解是瀏覽器為了實現原型鏈,在提供這些函數的時候按照原型鏈的實現給他們添加了
__proto__-->** *.prototype
。就是js環境提供了幾個特殊的物件(函數),然後為了不違反規範,對這些物件(函數)做了處理。第一條肯定是對的,第二條是我的理解。
雷雷