27 lines
898 B
JavaScript
27 lines
898 B
JavaScript
// add fake Function#toString
|
|
// for correct work wrapped methods / constructors with methods like LoDash isNative
|
|
var global = require('./$.global')
|
|
, hide = require('./$.hide')
|
|
, 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){
|
|
if(typeof val == 'function'){
|
|
val.hasOwnProperty(SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
|
|
val.hasOwnProperty('name') || hide(val, 'name', key);
|
|
}
|
|
if(O === global){
|
|
O[key] = val;
|
|
} else {
|
|
if(!safe)delete O[key];
|
|
hide(O, key, val);
|
|
}
|
|
})(Function.prototype, TO_STRING, function toString(){
|
|
return typeof this == 'function' && this[SRC] || $toString.call(this);
|
|
}); |