2 var $ = require('../internals/export');
3 var aFunction = require('../internals/a-function');
4 var toObject = require('../internals/to-object');
5 var fails = require('../internals/fails');
6 var arrayMethodIsStrict = require('../internals/array-method-is-strict');
9 var nativeSort = test.sort;
12 var FAILS_ON_UNDEFINED = fails(function () {
16 var FAILS_ON_NULL = fails(function () {
20 var STRICT_METHOD = arrayMethodIsStrict('sort');
22 var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD;
24 // `Array.prototype.sort` method
25 // https://tc39.es/ecma262/#sec-array.prototype.sort
26 $({ target: 'Array', proto: true, forced: FORCED }, {
27 sort: function sort(comparefn) {
28 return comparefn === undefined
29 ? nativeSort.call(toObject(this))
30 : nativeSort.call(toObject(this), aFunction(comparefn));