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.
32 lines
934 B
32 lines
934 B
'use strict';
|
|
var $ = require('../internals/export');
|
|
var aFunction = require('../internals/a-function');
|
|
var toObject = require('../internals/to-object');
|
|
var fails = require('../internals/fails');
|
|
var arrayMethodIsStrict = require('../internals/array-method-is-strict');
|
|
|
|
var test = [];
|
|
var nativeSort = test.sort;
|
|
|
|
// IE8-
|
|
var FAILS_ON_UNDEFINED = fails(function () {
|
|
test.sort(undefined);
|
|
});
|
|
// V8 bug
|
|
var FAILS_ON_NULL = fails(function () {
|
|
test.sort(null);
|
|
});
|
|
// Old WebKit
|
|
var STRICT_METHOD = arrayMethodIsStrict('sort');
|
|
|
|
var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD;
|
|
|
|
// `Array.prototype.sort` method
|
|
// https://tc39.github.io/ecma262/#sec-array.prototype.sort
|
|
$({ target: 'Array', proto: true, forced: FORCED }, {
|
|
sort: function sort(comparefn) {
|
|
return comparefn === undefined
|
|
? nativeSort.call(toObject(this))
|
|
: nativeSort.call(toObject(this), aFunction(comparefn));
|
|
}
|
|
});
|
|
|