如何将这个原型函数转换为es6?

时间:2018-05-22 21:23:20

标签: javascript ecmascript-6 prototype

// 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:无法读取属性'替换'未定义的

我如何使用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 :(得分:4)

箭头功能具有词法绑定,因此您无法以您希望的方式使用this。如果你this未定义,你就无法读取它的'替换'属性。

答案 1 :(得分:0)

问题是您正在使用箭头功能。

箭头函数表达式是词法绑定this值。因此,该值绑定到undefined。你必须使用正常的功能。