将方法原型添加到String
等类非常简单。但是,这会影响全局范围内的所有字符串。
如何添加一个可从所有字符串文字中访问的方法:"foo".bar()
,这样该方法只能在ES6类的范围内访问,比如说,或函数调用?
答案 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');