Как преобразовать эту функцию-прототип в es6? - PullRequest
0 голосов
/ 23 мая 2018
// Converts snake-case to camelCase
String.prototype.toCamel = function () {
  return this.replace(/(\-[a-z])/g, $1 => $1.toUpperCase().replace('-', ''));
};

Когда я делаю следующее:

// Converts snake-case to camelCase
String.prototype.toCamel = () => this.replace(/(\-[a-z])/g, $1 => $1.toUpperCase().replace('-', ''));

Я получаю эту ошибку:

modifiers.js: 9 Uncaught TypeError: Невозможно прочитать свойство 'replace' изundefined

Как я использую эту toCamel функцию:

// Add style to coin
export const setStyle = (id) => {
  switch (id) {
    case 'basic-attention-token': return style.basicattentiontoken;
    case 'bitcoin-cash': return style[id.toCamel()];
    case 'deepbrain-chain': return style[id.toCamel()];
    case '0x': return style.zrx;
    default: return style[id];
  }
};

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Проблема в том, что вы используете функцию Arrow.

Выражение функции стрелки лексически связывает значение this.Итак, значение привязано к undefined.Вы должны использовать обычную функцию.

0 голосов
/ 23 мая 2018

Функции стрелок имеют лексическую привязку, поэтому вы не можете использовать this так, как вам хочется.В случае, если у вас this не определено и вы не можете прочитать его свойство «заменить».

...