You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
1.0 KiB
31 lines
1.0 KiB
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); |
|
});
|
|
|