2012-04-17 33 views
14

我在某處使用prototype來擴展本機對象(String,Number, Array等)是一個壞主意。這是真的?爲什麼或者爲什麼不?正在使用Prototype來擴展本機對象嗎?

+9

這是一些值得一個完全有效的問題,海事組織。它不應該被關閉。 – 2012-04-17 18:50:40

+0

http://stackoverflow.com/faq#dontask說它不是。 – vascowhite 2012-04-17 19:33:59

+0

基本上一個dup http://stackoverflow.com/questions/8859828/javascript-what-dangers-are-in-extending-array-prototype/8859941#8859941 – 2012-04-17 19:54:13

回答

6

我不認爲這是壞事。如果你看看Ruby on Rails,很多本地對象都會擴展自定義功能,這是一個非常好的框架。

什麼是壞的是,如果你更改本地對象現有方法。這可能會導致不可預見的後果。

+0

啊,好的。是的,這是有道理的。 – 2012-04-17 18:51:24

1

我會盡量避免擴展/修改本機對象的行爲。

在團隊環境中進行開發至少是有意義的。

很簡單,因爲,幾個月後,另一個開發人員編寫的代碼的另一個獨立的片沒有立即去識別改變行爲,除非某個文件,並開始他的任務之前作出意識到這一點。

相反,我建議封裝/「命名空間」 -ing所有這些功能,有人可能會選擇或不使用修改過的函數。

此外,本機對象及其方法已針對廣泛的情況進行了全面測試。所以你必須在修改本地功能之前完全確定你正在做什麼。