12345678910111213141516171819202122232425262728293031 |
- var global = require('./_global');
- var hide = require('./_hide');
- var has = require('./_has');
- var SRC = require('./_uid')('src');
- var $toString = require('./_function-to-string');
- var TO_STRING = 'toString';
- var TPL = ('' + $toString).split(TO_STRING);
- require('./_core').inspectSource = function (it) {
- return $toString.call(it);
- };
- (module.exports = function (O, key, val, safe) {
- var isFunction = typeof val == 'function';
- if (isFunction) has(val, 'name') || hide(val, 'name', key);
- if (O[key] === val) return;
- if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
- if (O === global) {
- O[key] = val;
- } else if (!safe) {
- delete O[key];
- hide(O, key, val);
- } else if (O[key]) {
- O[key] = val;
- } else {
- hide(O, key, val);
- }
- // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
- })(Function.prototype, TO_STRING, function toString() {
- return typeof this == 'function' && this[SRC] || $toString.call(this);
- });
|