All modules in node.js share the same global scope.
Just require()
it and any changes you make to global objects will propagate.
Question
I'm a bit confused by node.js require
system.
I know how to export
or module.export
function of the require
d component, but not sure how to enhance js Object with prototype.
For instance, I have a code to enhance js Object with prototype.watch method.
I will have this code in my own npm package, and import with node require
.
What is the best manner to do this?
Do I need to refactor this code as a function to export and need to execute after require
?
Thanks.
if (!Object.prototype.watch)
{
Object.defineProperty(Object.prototype, "watch",
{
enumerable: false,
configurable: true,
writable: false,
value: function(prop, handler)
{
var
oldval = this[prop],
newval = oldval,
getter = function()
{
return newval;
},
setter = function(val)
{
oldval = newval;
return newval = handler.call(this, prop, oldval, val);
};
if (delete this[prop])
{ // can't watch constants
Object.defineProperty(this, prop,
{
get: getter,
set: setter,
enumerable: true,
configurable: true
});
}
}
});
}
// object.unwatch
if (!Object.prototype.unwatch)
{
Object.defineProperty(Object.prototype, "unwatch",
{
enumerable: false,
configurable: true,
writable: false,
value: function(prop)
{
var val = this[prop];
delete this[prop]; // remove accessors
this[prop] = val;
}
});
}
Solution
All modules in node.js share the same global scope.
Just require()
it and any changes you make to global objects will propagate.