2017-02-17 6 views

ответ

1

Согласно MDN's String.fromCodePoint doc:

Метод String.fromCodePoint был добавлен в ECMAScript 2015 и может не поддерживаться во всех веб-браузеров или сред пока. Используйте приведенный ниже код для polyfill:

*! http://mths.be/fromcodepoint v0.1.0 by @mathias */ 
if (!String.fromCodePoint) { 
    (function() { 
    var defineProperty = (function() { 
     // IE 8 only supports `Object.defineProperty` on DOM elements 
     try { 
     var object = {}; 
     var $defineProperty = Object.defineProperty; 
     var result = $defineProperty(object, object, object) && $defineProperty; 
     } catch(error) {} 
     return result; 
    }()); 
    var stringFromCharCode = String.fromCharCode; 
    var floor = Math.floor; 
    var fromCodePoint = function() { 
     var MAX_SIZE = 0x4000; 
     var codeUnits = []; 
     var highSurrogate; 
     var lowSurrogate; 
     var index = -1; 
     var length = arguments.length; 
     if (!length) { 
     return ''; 
     } 
     var result = ''; 
     while (++index < length) { 
     var codePoint = Number(arguments[index]); 
     if (
      !isFinite(codePoint) ||  // `NaN`, `+Infinity`, or `-Infinity` 
      codePoint < 0 ||    // not a valid Unicode code point 
      codePoint > 0x10FFFF ||  // not a valid Unicode code point 
      floor(codePoint) != codePoint // not an integer 
     ) { 
      throw RangeError('Invalid code point: ' + codePoint); 
     } 
     if (codePoint <= 0xFFFF) { // BMP code point 
      codeUnits.push(codePoint); 
     } else { // Astral code point; split in surrogate halves 
      // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae 
      codePoint -= 0x10000; 
      highSurrogate = (codePoint >> 10) + 0xD800; 
      lowSurrogate = (codePoint % 0x400) + 0xDC00; 
      codeUnits.push(highSurrogate, lowSurrogate); 
     } 
     if (index + 1 == length || codeUnits.length > MAX_SIZE) { 
      result += stringFromCharCode.apply(null, codeUnits); 
      codeUnits.length = 0; 
     } 
     } 
     return result; 
    }; 
    if (defineProperty) { 
     defineProperty(String, 'fromCodePoint', { 
     'value': fromCodePoint, 
     'configurable': true, 
     'writable': true 
     }); 
    } else { 
     String.fromCodePoint = fromCodePoint; 
    } 
    }()); 
} 

так что вы можете попробовать polyfill String.fromCodePoint в файле

+1

Но не React Native должен обеспечить ES6 через Babel transpilation? – hippietrail

+0

Я потерял целую неделю, пытаясь понять, почему мое приложение было разбито на производстве, пока я не нашел причину, и это было именно так. Какая самая большая ошибка Java/android (даже в Android 7.0 не реализована) – aMarCruz

Смежные вопросы