2017-01-19 7 views
0

プロトタイプ的にStringなどのクラスにメソッドを追加するのは非常に簡単です。ただし、これはグローバルスコープ内のすべての文字列に影響します。スコープ内の文字列プロトタイプのみに付属する関数

"foo".bar()のようなすべての文字列リテラルからアクセス可能なメソッドを追加するにはどうすればよいのですか?つまり、そのメソッドはES6クラスのスコープ内でしかアクセスできません。

答えて

2

私はあなたがそれを行うことができない恐れがあります。また、それは悪い考えのように思える。 通常の機能を使っている方が良いでしょう。いいえ:bar("foo")

0

これはできません。文字列はプリミティブです。それらはオブジェクトのように使用されているのでStringインスタンスに強制されます(したがって、String.prototypeメソッドを使用できます)。この動作はスコープに依存しません。

class Superstring extends String { 
    bar() { 
    return `${this} bar`; 
    } 
} 

にとっては可能

new Superstring('foo').bar(); 

または

const bar = (str) => Superstring.prototype.bar.call(str); 

bar('foo'); 
関連する問題