From 91eda89313dd125043a0d2a3d66554ddcc8e1cf3 Mon Sep 17 00:00:00 2001 From: Phillip Demro Date: Thu, 21 Nov 2019 09:58:47 -0500 Subject: [PATCH] Check if startsWith is configurable This will throw an exception if the property is not configurable --- .../core-js/modules/es.string.starts-with.js | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/packages/core-js/modules/es.string.starts-with.js b/packages/core-js/modules/es.string.starts-with.js index 14a590482f4d..f09b809362aa 100644 --- a/packages/core-js/modules/es.string.starts-with.js +++ b/packages/core-js/modules/es.string.starts-with.js @@ -8,16 +8,18 @@ var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic'); var nativeStartsWith = ''.startsWith; var min = Math.min; -// `String.prototype.startsWith` method -// https://tc39.github.io/ecma262/#sec-string.prototype.startswith -$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('startsWith') }, { - startsWith: function startsWith(searchString /* , position = 0 */) { - var that = String(requireObjectCoercible(this)); - notARegExp(searchString); - var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length)); - var search = String(searchString); - return nativeStartsWith - ? nativeStartsWith.call(that, search, index) - : that.slice(index, index + search.length) === search; - } -}); +if(Object.getOwnPropertyDescriptor(String.prototype, "startsWith").configurable) { + // `String.prototype.startsWith` method + // https://tc39.github.io/ecma262/#sec-string.prototype.startswith + $({ target: 'String', proto: true, forced: !correctIsRegExpLogic('startsWith') }, { + startsWith: function startsWith(searchString /* , position = 0 */) { + var that = String(requireObjectCoercible(this)); + notARegExp(searchString); + var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length)); + var search = String(searchString); + return nativeStartsWith + ? nativeStartsWith.call(that, search, index) + : that.slice(index, index + search.length) === search; + } + }); +}