You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
1.0 KiB
JavaScript
32 lines
1.0 KiB
JavaScript
7 years ago
|
var global = require('./_global')
|
||
|
, hide = require('./_hide')
|
||
|
, has = require('./_has')
|
||
|
, SRC = require('./_uid')('src')
|
||
|
, TO_STRING = 'toString'
|
||
|
, $toString = Function[TO_STRING]
|
||
|
, 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);
|
||
|
});
|