我正在學習構造函數,並且遇到了關鍵字new
。新操作符在哪裏創建新對象?
var obj = new myContructor();
我才知道,它創造了一個新的對象,設置它的原型constructor.prototype
,設置其屬性與this
根據關鍵字,最後返回該對象。
現在,我很困惑它在哪裏創建新的對象,因爲內部存儲器或其中的易失性的地方。
當我們說它返回那個對象時,它在var obj的位置創建一個新對象的副本,還是它將obj引用到創建新對象的任何位置?
我正在學習構造函數,並且遇到了關鍵字new
。新操作符在哪裏創建新對象?
var obj = new myContructor();
我才知道,它創造了一個新的對象,設置它的原型constructor.prototype
,設置其屬性與this
根據關鍵字,最後返回該對象。
現在,我很困惑它在哪裏創建新的對象,因爲內部存儲器或其中的易失性的地方。
當我們說它返回那個對象時,它在var obj的位置創建一個新對象的副本,還是它將obj引用到創建新對象的任何位置?
Javascript中幕後有很多事情要做,在你無法訪問的內存中不斷創建內存。至於你所關心的這一點的同時編寫JavaScript代碼:
new
創建對象並做了所有原型的東西被執行myConstructor()
,並this
內部功能設置爲對象myContructor
以對象作爲上下文被調用)myConstructor
完成後,對象被分配給變量obj
作爲所有這些的結果關於什麼myConstructor
可以返回以及如何影響結果有一系列注意事項,但爲簡單起見,我們將忽略它。基本事件鏈是new
創建對象→myConstructor
將該對象視爲this
→obj
「接收」此對象作爲返回值new
。
當然,所有這些創建對象並將它傳遞到不同的地方都是由JavaScript引擎完成的,並且需要內存中某個對象的內部存儲。
內部存儲器或地方在那裏它是揮發性
是的,當然。就像程序中的其他任何數據一樣。
做我們的意思是說,它返回一個對象
你正在一個函數調用時。函數調用具有返回值。該對象是該函數調用的返回值。
它在VAR OBJ
它創建它在函數的位置創建新對象的副本,則它返回到它的基準(就像任何其他對象),並該引用存儲在變量中,因爲您使用了賦值。
嘟nit nitpick:該對象不是直接函數調用的返回值(除非它是,當然)。這真的是'new'運算符的結果......:o) – deceze
你是什麼意思'創建對象內部功能'? –
ThisBinding是JavaScript解釋器在評估JavaScript代碼時所維護的東西,就像一個特殊的CPU寄存器,它持有對對象的引用。每當僅在三種不同的情況中的一種情況下建立執行上下文時,解釋器就更新ThisBinding。 檢查[此](http://stackoverflow.com/questions/3127429/how-does-the-this-keyword-work)鏈接。 – Shubham
我關閉這個太寬泛,雖然這可能是一些職位的重複。在MDN中,您可以找到它的解釋 – Jai
該對象在由JavaScript運行時管理的堆上創建。與堆中的內存位置相對應的數字被返回(引用),因爲對象通過「引用值」傳遞。這個數字(又名「參考」)被複制。複製整個對象的代價過高,而且不是你通常想要的。 – Ben