Skip to content

Commit 13d7295

Browse files
committed
Avoid IE8’s broken Object.defineProperty
IE 8 only supports `Object.defineProperty` on DOM elements, so detect that and fall back.
1 parent 54224fa commit 13d7295

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

codepointat.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22
if (!String.prototype.codePointAt) {
33
(function() {
44
'use strict'; // needed to support `apply`/`call` with `undefined`/`null`
5+
var defineProperty = (function() {
6+
// IE 8 only supports `Object.defineProperty` on DOM elements
7+
try {
8+
var object = {};
9+
var $defineProperty = Object.defineProperty;
10+
var result = $defineProperty(object, object, object) && $defineProperty;
11+
} catch(error) {}
12+
return result;
13+
}());
514
var codePointAt = function(position) {
615
if (this == null) {
716
throw TypeError();
@@ -32,8 +41,8 @@ if (!String.prototype.codePointAt) {
3241
}
3342
return first;
3443
};
35-
if (Object.defineProperty) {
36-
Object.defineProperty(String.prototype, 'codePointAt', {
44+
if (defineProperty) {
45+
defineProperty(String.prototype, 'codePointAt', {
3746
'value': codePointAt,
3847
'configurable': true,
3948
'writable': true

0 commit comments

Comments
 (0)