我可以在ES5中编写以下内容:
String.prototype.something=function(){
return this.split(' ').join('');
};
如何使用新功能在ES6中做同样的事情?
我知道这也是有效的ES6。我想知道在ES6中是否还有其他实现此类功能的方法?
上面的功能只是一个例子。
在ES6中,你也可以这样操作Object.assign()
:
Object.assign(String.prototype, {
something() {
return this.split(' ').join();
}
});
你可以在此处找到有关该方法的更多信息。
或者你可以使用defineProperty
(我认为这会更好):
Object.defineProperty(String.prototype, 'something', {
value() {
return this.split(' ').join();
}
});
请参阅此处的文档。
见我的评论看的时候使用defineProperty
VS Object.assign()
。
有什么区别?有什么好处?他为什么仍要这样做而不是使用
defineProperty
?是的,您是对的defineProperty在这里会更好。请参阅此博客文章。特别是结论总结得很好。一分钟后,我会将其添加到我的答案中。
defineProperty
ES5代码不是吗?我真的没有看到ES6如何提供String
比这更好的扩展方法(除了子类化之外)。因此,这意味着es5仍然是实现此类功能的最佳方法。