2013-04-11 74 views
1

看起來好像我修改了Object.prototype,這似乎在所有模塊中都可見。如果這些全局變化可以被隔離以便保護模塊不受模塊影響,那將是非常好的,因爲不需要要求。隔離node.js中模塊之間的全局變化

這是以任何方式可能嗎?

回答

1

Object.prototypeObject.prototype是一個對象,只有它一個,所以在一個地方修改它會影響對該對象的所有引用(就像任何對象一樣)。這通常被認爲是一個好處,因爲它使模塊像colors成爲可能。不應該需要保護模塊免受全局原型的改變,因爲這些改變只應該是擴展。如果你的或者別人的模塊正在修改內置的方法/屬性,那麼這首先可能是不好的做法。

雖然您沒有舉例,但我認爲您可能希望創建本地功能(未附加到原型),或者使用inheritance來解決您對特定對象的疑慮。

+0

是的,我想你說的是有道理的。但是,使用這種方案時,總會有兩個擴展碰撞的可能性 - 即在單個對象上創建相同的名稱。 – 2013-04-11 04:13:35

+0

你是對的。如果您真的擔心這個問題,可以從C庫的處理方式(通常使用特定於庫的前綴/後綴)中吸取教訓。在實踐中,我從來沒有見過它發生在節點中。模塊根本不經常編輯全局對象原型。 – 2013-04-11 04:23:37