2013-01-15 36 views
3

我想在node.js應用程序中添加或覆蓋Object,Function和Array的一些標準方法(例如,如this answer中建議的那樣)。我應該如何在一個模塊中完成所有「補丁」,以便影響我所有其他模塊?在node.js中更改對象原型的位置?

如果我在一個只有require'd的模塊中執行它,那麼它是否足夠了,否則它將無法工作,因爲這兩個模塊具有不同的全局命名空間,因此它們具有不同的對象?或者我應該運行一些初始化在require後面的功能是否使所有這些「補丁」在這個模塊中工作呢?

回答

4

每個加載的文件共享相同的原始對象,如對象,數組等等,除非在不同的vm上下文中運行,所以在初始化時需要一次文件將在任何地方進行更改。

+0

你的意思是,它甚至足以需要將此模塊與「補丁」一次,只在我的主要模塊,我不需要在我想要Object&co「修補」的每個模塊中需要它? – esp

+1

是的,只需要一次即可。節點中的所有模塊共享相同的全局範圍。它們具有不同的*模塊*範圍,但具有相同的全局範圍。因此它們具有相同的Object,Function,Array等。 –

+1

它適用於Function.prototype和Array.prototype,但是當我嘗試使用Object.prototype時,它會引發TypeError: TypeError:屬性描述必須是一個對象:undefined at Function.defineProperty(native) at Object。 (/opt/nginx/html/dev.stockscompare/node_modules/express/lib/express.js:53:10) – esp

8
//require the util.js file 
require('./util.js'); 

var a = []; 
a.doSomething(); 
在「util.js中」文件

//in your util.js file you don't have to write a module, just write your code... 
Array.prototype.doSomething = function(){console.log("doSomething")};