// Case A
function Constructor() {
this.foo = function() {
...
};
...
}
// vs
// Case B
function Constructor() {
...
};
Constructor.prototype.foo = function() {
...
}
其中一個主要原因人建議使用原型是.foo
是在爲this.foo
使用其他方法時創建多次原型的情況下創建一次。是否創建函數佔用更多的內存
然而,人們會期望口譯員可以優化這一點。因此,只有一個函數foo
的副本在情況下爲A.
當然,由於閉包,每個對象仍然具有唯一的範圍上下文,但是每個對象的新函數的開銷較小。
現代JS解釋器是否優化了案例A,因此只有函數foo
的一個副本?
我們可以有一些參考文獻來定義「更好」和「現代解釋器」 – Raynos
您的測試與我在我的測試中發現的相符---我還在函數內部添加了一些大代碼塊來測試是否使內存氣球更快 - 它並沒有...功能內的代碼不需要額外的內存。 – gnarf
哦 - 我還在測試前後記錄了內存使用情況,以便在創建對象之前測量差異 – gnarf