Skip to content

Commit e74135e

Browse files
committed
[Fix] ensure throwing on a string in node < 4
1 parent 53a86d4 commit e74135e

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

implementation.js

+5
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,13 @@ var ToObject = require('es-object-atoms/ToObject');
1010
var ToString = require('es-abstract/2024/ToString');
1111

1212
var $TypeError = require('es-errors/type');
13+
var isString = require('is-string');
1314

1415
module.exports = function reverse() {
16+
if (isString(this)) {
17+
Set(String(this), 0, '', true);
18+
throw new $TypeError('Cannot assign to read only property of ' + this);
19+
}
1520
var O = ToObject(this); // step 1
1621
var len = LengthOfArrayLike(O); // step 2
1722

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@
5555
"define-properties": "^1.2.1",
5656
"es-abstract": "^1.23.9",
5757
"es-errors": "^1.3.0",
58-
"es-object-atoms": "^1.1.1"
58+
"es-object-atoms": "^1.1.1",
59+
"is-string": "^1.1.1"
5960
},
6061
"devDependencies": {
6162
"@es-shims/api": "^2.5.1",

polyfill.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,13 @@
33
var implementation = require('./implementation');
44

55
module.exports = function getPolyfill() {
6-
return Array.prototype.reverse || implementation;
6+
if (!Array.prototype.reverse) {
7+
return implementation;
8+
}
9+
try {
10+
Array.prototype.reverse.call('abc');
11+
return implementation;
12+
} catch (e) {
13+
return Array.prototype.reverse;
14+
}
715
};

0 commit comments

Comments
 (0)