core-js
Version:
Standard library
55 lines (51 loc) • 1.73 kB
JavaScript
!function(_, toLocaleString){
// Placeholder
core._ = path._ = path._ || {};
$define(PROTO + FORCED, FUNCTION, {
part: part,
by: function(that){
var fn = this
, _ = path._
, holder = false
, length = arguments.length
, isThat = that === _
, i = +!isThat
, indent = i
, it, args;
if(isThat){
it = fn;
fn = call;
} else it = that;
if(length < 2)return ctx(fn, it, -1);
args = Array(length - indent);
while(length > i)if((args[i - indent] = arguments[i++]) === _)holder = true;
return partial(fn, args, length, holder, _, true, it);
},
only: function(numberArguments, that /* = @ */){
var fn = assertFunction(this)
, n = toLength(numberArguments)
, isThat = arguments.length > 1;
return function(/* ...args */){
var length = min(n, arguments.length)
, args = Array(length)
, i = 0;
while(length > i)args[i] = arguments[i++];
return invoke(fn, args, isThat ? that : this);
}
}
});
function tie(key){
var that = this
, bound = {};
return hidden(that, _, function(key){
if(key === undefined || !(key in that))return toLocaleString.call(that);
return has(bound, key) ? bound[key] : (bound[key] = ctx(that[key], that, -1));
})[_](key);
}
hidden(path._, TO_STRING, function(){
return _;
});
hidden(ObjectProto, _, tie);
DESC || hidden(ArrayProto, _, tie);
// IE8- dirty hack - redefined toLocaleString is not enumerable
}(DESC ? uid('tie') : TO_LOCALE, ObjectProto[TO_LOCALE]);