1var global = require('./_global'); 2var hide = require('./_hide'); 3var has = require('./_has'); 4var SRC = require('./_uid')('src'); 5var $toString = require('./_function-to-string'); 6var TO_STRING = 'toString'; 7var TPL = ('' + $toString).split(TO_STRING); 8 9require('./_core').inspectSource = function (it) { 10 return $toString.call(it); 11}; 12 13(module.exports = function (O, key, val, safe) { 14 var isFunction = typeof val == 'function'; 15 if (isFunction) has(val, 'name') || hide(val, 'name', key); 16 if (O[key] === val) return; 17 if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); 18 if (O === global) { 19 O[key] = val; 20 } else if (!safe) { 21 delete O[key]; 22 hide(O, key, val); 23 } else if (O[key]) { 24 O[key] = val; 25 } else { 26 hide(O, key, val); 27 } 28// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative 29})(Function.prototype, TO_STRING, function toString() { 30 return typeof this == 'function' && this[SRC] || $toString.call(this); 31}); 32