rit*_*078 7 javascript string ecmascript-6
我可以在es5中写下以下内容:
String.prototype.something=function(){
return this.split(' ').join('');
};
Run Code Online (Sandbox Code Playgroud)
如何使用新功能在es6中执行相同的操作?
PS:我知道这也是一个有效的es6.我不知道在es6中是否还有其他方法可以实现更短的这些功能?以上功能只是一个例子.
AWo*_*olf 14
在ES6中你也可以这样做Object.assign():
Object.assign(String.prototype, {
something() {
return this.split(' ').join();
}
});
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到有关此方法的更多信息.
或者你可以使用defineProperty(我认为这会更好):
Object.defineProperty(String.prototype, 'something', {
value() {
return this.split(' ').join();
}
});
Run Code Online (Sandbox Code Playgroud)
请参阅此处的文档.
见我的评论看的时候使用definePropertyVS Object.assign().
小智 5
您的建议在ES6中运行良好,它有什么问题吗?
如果你想实际扩展String,而不是仅仅为String自己添加一个方法,并获得温暖的ES6感觉,你可以尝试:
class MyString extends String {
something() { return this.split(' ').join(''); }
}
Run Code Online (Sandbox Code Playgroud)
但是,您将很快遇到扩展内置类的限制.有可能你会看到可怕的
TypeError: String.prototype.toString is not generic
Run Code Online (Sandbox Code Playgroud)
错误消息(这是来自babel-node).
| 归档时间: |
|
| 查看次数: |
10173 次 |
| 最近记录: |