首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ES6中扩展字符串类

在ES6中扩展字符串类
EN

Stack Overflow用户
提问于 2015-05-15 19:05:07
回答 2查看 16.6K关注 0票数 15

我可以用ES5编写以下代码:

代码语言:javascript
复制
String.prototype.something=function(){
  return this.split(' ').join('');
};

我如何在ES6中使用新特性做同样的事情?

我知道这也是一个有效的ES6。我想知道在ES6中有没有其他更短的方法来实现这样的函数?

上面的函数只是一个例子。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-15 20:14:52

在ES6中,您也可以使用Object.assign()这样做:

代码语言:javascript
复制
Object.assign(String.prototype, {
    something() {
        return this.split(' ').join();
    }
});

您可以在here方法中找到更多信息。

或者你可以使用defineProperty (我认为在这里会更好):

代码语言:javascript
复制
Object.defineProperty(String.prototype, 'something', {
    value() {
        return this.split(' ').join();
    }
});

请参阅文档here

请参阅我的评论,了解何时使用definePropertyObject.assign()

票数 24
EN

Stack Overflow用户

发布于 2015-05-15 20:31:37

您的建议在ES6中运行良好,有什么问题吗?

如果你想真正扩展String,而不是仅仅向String本身添加一个方法,并获得温暖的ES6感觉,你可以尝试:

代码语言:javascript
复制
class MyString extends String {
    something() { return this.split(' ').join(''); }
}

但是,在扩展内置类时,您很快就会遇到限制。你很有可能会看到可怕的

代码语言:javascript
复制
TypeError: String.prototype.toString is not generic

错误消息(来自babel-node)。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30257915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档