dynvar
Version:
Dynamic variable support for JS
36 lines (33 loc) • 840 B
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true
});
var vars = Symbol('VARS');
var top = Symbol('TOPVARS');
global[vars] = global[top] = Object.create(null);
function dynvar(name, value) {
if (arguments.length < 2) {
return global[vars][name];
} else {
global[vars][name] = value;
return value;
}
}
dynvar.define = function (name, value) {
return global[top][name] = value;
};
dynvar.bind = function (varsAndValues, cb) {
try {
global[vars] = Object.create(global[vars]);
for (var key in varsAndValues) {
if (varsAndValues.hasOwnProperty(key)) {
global[vars][key] = varsAndValues[key];
}
}
return cb();
} finally {
global[vars] = Object.getPrototypeOf(global[vars]) || top;
}
};
exports['default'] = dynvar;
module.exports = exports['default'];