var global = require('../internals/global');
|
var isCallable = require('../internals/is-callable');
|
var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
|
var makeBuiltIn = require('../internals/make-built-in');
|
var setGlobal = require('../internals/set-global');
|
|
module.exports = function (O, key, value, options) {
|
var unsafe = options ? !!options.unsafe : false;
|
var simple = options ? !!options.enumerable : false;
|
var noTargetGet = options ? !!options.noTargetGet : false;
|
var name = options && options.name !== undefined ? options.name : key;
|
if (isCallable(value)) makeBuiltIn(value, name, options);
|
if (O === global) {
|
if (simple) O[key] = value;
|
else setGlobal(key, value);
|
return O;
|
} else if (!unsafe) {
|
delete O[key];
|
} else if (!noTargetGet && O[key]) {
|
simple = true;
|
}
|
if (simple) O[key] = value;
|
else createNonEnumerableProperty(O, key, value);
|
return O;
|
};
|