12345678910111213141516171819202122232425262728 |
- 'use strict';
- var isCallable = require('../internals/is-callable');
- var definePropertyModule = require('../internals/object-define-property');
- var makeBuiltIn = require('../internals/make-built-in');
- var defineGlobalProperty = require('../internals/define-global-property');
-
- module.exports = function (O, key, value, options) {
- if (!options) options = {};
- var simple = options.enumerable;
- var name = options.name !== undefined ? options.name : key;
- if (isCallable(value)) makeBuiltIn(value, name, options);
- if (options.global) {
- if (simple) O[key] = value;
- else defineGlobalProperty(key, value);
- } else {
- try {
- if (!options.unsafe) delete O[key];
- else if (O[key]) simple = true;
- } catch (error) { /* empty */ }
- if (simple) O[key] = value;
- else definePropertyModule.f(O, key, {
- value: value,
- enumerable: false,
- configurable: !options.nonConfigurable,
- writable: !options.nonWritable
- });
- } return O;
- };
|