Warm tip: This article is reproduced from serverfault.com, please click

Extend a String class in ES6

发布于 2015-05-15 11:05:07

I can write the following in ES5:

String.prototype.something=function(){
  return this.split(' ').join('');
};

How do I do the same thing in ES6 using the new features?

I know that this is also a valid ES6. I want to know whether there's any other way of implementing such functions in ES6 which is shorter?
The above function is just an example.

Questioner
ritz078
Viewed
0
AWolf 2015-05-15 21:01:48

In ES6 you can also do it with Object.assign() like this:

Object.assign(String.prototype, {
    something() {
        return this.split(' ').join();
    }
});

You can find more info to the method here.

Or you could use defineProperty (I think that would be better here):

Object.defineProperty(String.prototype, 'something', {
    value() {
        return this.split(' ').join();
    }
});

See the docs here.

See my comment to see when to use defineProperty vs Object.assign().