| 12345678910111213141516171819202122232425 |
- 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;
- };
|