看板 Web_Design 關於我們 聯絡資訊
※ 引述《flu (Twinkle stars)》之銘言: : 針對Javascrit : 我在某文件看見一段敘述,大意是說,如果有像以下這樣一段程式碼 : function Person(first, last) { : this.first = first; : this.last = last; : this.fullName = function() { : return this.first + ' ' + this.last; : } : this.fullNameReversed = function() { : return this.last + ', ' + this.first; : } : } : var s = new Person("Simon", "Willison"); : 這樣子每次在new Person的時候記憶體也會新產生一份Person的inner function : 的程式碼佔住多餘的空間(可以用改寫prototype function的方式解決) : 關於產生多於程式碼的敘述,真的是所說的那樣嗎? : 另外,如果上述沒錯的話,這似乎跟c++裡的new object產生後的結果不一樣是嗎? 我並不是很確定啦。不過我有寫過多邊形跟點的constructor,用點來構成多邊形 結果用多邊形的constructor來產生多邊形時,有發現程式佔用的記憶體逐漸增加 而且幅度不小。 測試的時候發生意外,就是我用迴圈產生多邊形物件時,不小心輸入錯誤的數字 結果讓firefox企圖在程式中產生大概1024*1024個多邊形 因為讓程式跑以後就離開座位,我回到座位時發現電腦跑很慢 打開工作管理員看一看,發現firefox佔用了500多MB的記憶體,而且還在不斷增加 如果只是用一個單純的reference,記憶體增加的幅度應該不會那麼大吧? 他實際怎麼處理function物件的,可能看firefox的javascript引擎的程式會比較清楚 就是了,要不然就是要找一下ECMA-262,但是也不確定firefox或是IE有完全依照 spec來實做。 -- Sapere Aude! 這就是啟蒙運動的口號! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.192.103