| | |
| | | 'use strict'; |
| | | var $ = require('../internals/export'); |
| | | var uncurryThis = require('../internals/function-uncurry-this'); |
| | | var fails = require('../internals/fails'); |
| | | var thisNumberValue = require('../internals/this-number-value'); |
| | | |
| | | var nativeToPrecision = 1.0.toPrecision; |
| | | var un$ToPrecision = uncurryThis(1.0.toPrecision); |
| | | |
| | | var FORCED = fails(function () { |
| | | // IE7- |
| | | return nativeToPrecision.call(1, undefined) !== '1'; |
| | | return un$ToPrecision(1, undefined) !== '1'; |
| | | }) || !fails(function () { |
| | | // V8 ~ Android 4.3- |
| | | nativeToPrecision.call({}); |
| | | un$ToPrecision({}); |
| | | }); |
| | | |
| | | // `Number.prototype.toPrecision` method |
| | |
| | | $({ target: 'Number', proto: true, forced: FORCED }, { |
| | | toPrecision: function toPrecision(precision) { |
| | | return precision === undefined |
| | | ? nativeToPrecision.call(thisNumberValue(this)) |
| | | : nativeToPrecision.call(thisNumberValue(this), precision); |
| | | ? un$ToPrecision(thisNumberValue(this)) |
| | | : un$ToPrecision(thisNumberValue(this), precision); |
| | | } |
| | | }); |