我可以用ES5编写以下代码:
String.prototype.something=function(){
return this.split(' ').join('');
};我如何在ES6中使用新特性做同样的事情?
我知道这也是一个有效的ES6。我想知道在ES6中有没有其他更短的方法来实现这样的函数?
上面的函数只是一个例子。
发布于 2015-05-15 20:14:52
在ES6中,您也可以使用Object.assign()这样做:
Object.assign(String.prototype, {
something() {
return this.split(' ').join();
}
});您可以在here方法中找到更多信息。
或者你可以使用defineProperty (我认为在这里会更好):
Object.defineProperty(String.prototype, 'something', {
value() {
return this.split(' ').join();
}
});请参阅文档here。
请参阅我的评论,了解何时使用defineProperty与Object.assign()。
发布于 2015-05-15 20:31:37
您的建议在ES6中运行良好,有什么问题吗?
如果你想真正扩展String,而不是仅仅向String本身添加一个方法,并获得温暖的ES6感觉,你可以尝试:
class MyString extends String {
something() { return this.split(' ').join(''); }
}但是,在扩展内置类时,您很快就会遇到限制。你很有可能会看到可怕的
TypeError: String.prototype.toString is not generic错误消息(来自babel-node)。
https://stackoverflow.com/questions/30257915
复制相似问题