define-built-in.js 953 B

12345678910111213141516171819202122232425
  1. var global = require('../internals/global');
  2. var isCallable = require('../internals/is-callable');
  3. var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
  4. var makeBuiltIn = require('../internals/make-built-in');
  5. var setGlobal = require('../internals/set-global');
  6. module.exports = function (O, key, value, options) {
  7. var unsafe = options ? !!options.unsafe : false;
  8. var simple = options ? !!options.enumerable : false;
  9. var noTargetGet = options ? !!options.noTargetGet : false;
  10. var name = options && options.name !== undefined ? options.name : key;
  11. if (isCallable(value)) makeBuiltIn(value, name, options);
  12. if (O === global) {
  13. if (simple) O[key] = value;
  14. else setGlobal(key, value);
  15. return O;
  16. } else if (!unsafe) {
  17. delete O[key];
  18. } else if (!noTargetGet && O[key]) {
  19. simple = true;
  20. }
  21. if (simple) O[key] = value;
  22. else createNonEnumerableProperty(O, key, value);
  23. return O;
  24. };