1
我發現向本地JavaScript對象(對象,函數,數組,字符串等)添加方法被一些人認爲是不好的做法,但是是否也存在與此相關的性能問題?將方法添加到原生JavaScript對象的性能影響是什麼?
如果使用其他方法擴展原型對象的實例,那麼原生對象的實例是否需要更長的時間才能創建和/或使用更多內存?
我發現向本地JavaScript對象(對象,函數,數組,字符串等)添加方法被一些人認爲是不好的做法,但是是否也存在與此相關的性能問題?將方法添加到原生JavaScript對象的性能影響是什麼?
如果使用其他方法擴展原型對象的實例,那麼原生對象的實例是否需要更長的時間才能創建和/或使用更多內存?
如果原型對象的實例已經用其他方法擴展,本地對象的實例是否需要更長的時間才能創建和/或使用更多內存?
號無論這些事情應該發生:每個對象都必須保持它的原型的引用,但引用不會得到任何較大的或如果有更多的屬性添加到它引用的對象採取任何更長的時間來檢索。現在
,如果你要足夠額外的方法添加到prototype
,它可能會開始影響到查找該類型的對象的方法所需要的時間。這會因實現而有所不同,但如果您發現有差異,我會感到震驚(我懷疑您會在它對運行時速度有顯着影響之前很久才試圖記住所有這些附加方法的名稱)。
編輯:here's a quick & ugly test - 之前,加入500K自定義方法的Array.prototype
對象後創建陣列500K實例。沒有可觀的區別;不用擔心...
由於原型遍歷是O(n),所以通過多個原型擴展javascript方法查找鏈增加了查找時間,但是在單個原型上的方法查找是恆定時間O(1)。 – 2009-07-29 04:21:12