仅在范围内附加到字​​符串原型的函数

时间:2017-01-19 22:22:55

标签: javascript scope ecmascript-6 prototype-programming

将方法原型添加到String等类非常简单。但是,这会影响全局范围内的所有字符串。

如何添加一个可从所有字符串文字中访问的方法:"foo".bar(),这样该方法只能在ES6类的范围内访问,比如说,或函数调用?

2 个答案:

答案 0 :(得分:2)

我担心你可能无法做到这一点。它似乎也是一个坏主意。 如果你只是使用普通功能可能会更好。喜欢:bar("foo")

答案 1 :(得分:0)

这是不可能的。字符串是原始的。当像对象一样使用时,它们被强制转换为String个实例(因此可以使用String.prototype方法)。这种行为并不取决于范围。

有关

class Superstring extends String {
  bar() {
    return `${this} bar`;
  }
}

可以是

new Superstring('foo').bar();

const bar = (str) => Superstring.prototype.bar.call(str);

bar('foo');