String() コンストラクター
Baseline
広く利用可能
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。
String コンストラクターは新しい String オブジェクトを生成します。関数として呼び出された場合は、文字列型のプリミティブ値を返します。
構文
js
new String(thing)
String(thing)
引数
thing-
文字列に変換するもの。
返値
String() が関数として(new なしで)呼び出された場合、 value が文字列プリミティブに変換されたものを返します。特に、シンボル値は、例外を発生させるのではなく、 "Symbol(description)" に変換されます。ここで、description は、このシンボルのの説明です。
String がコンストラクターとして(new 付きで)呼び出された場合、 value を(シンボルの特別扱いなしで)文字列プリミティブに変換し、 String オブジェクトでラップして返します。これはプリミティブではありません。
警告:
String をコンストラクターとして使用する場面はほとんど見つからないでしょう。
例
>String コンストラクターと String 関数
String 関数と String コンストラクターは異なる結果を生み出します。
js
const a = new String("Hello world"); // a === "Hello world" is false
const b = String("Hello world"); // b === "Hello world" is true
a instanceof String; // is true
b instanceof String; // is false
typeof a; // "object"
typeof b; // "string"
ここでは、この関数は約束通り(プリミティブ型の)文字列を生成します。 しかし、コンストラクターは String 型(オブジェクトのラッパー)のインスタンスを生成しますので、 String コンストラクターを使用するのは稀だといえます。
String() を用いてシンボルを文字列化
String() はシンボルを文字列に例外を発生させることなく変換することができる唯一の方法です。とても明示的だからです。
js
const sym = Symbol("example");
`${sym}`; // TypeError: Cannot convert a Symbol value to a string
"" + sym; // TypeError: Cannot convert a Symbol value to a string
"".concat(sym); // TypeError: Cannot convert a Symbol value to a string
js
const sym = Symbol("example");
String(sym); // "Symbol(example)"
仕様書
| 仕様書 |
|---|
| ECMAScript® 2027 Language Specification> # sec-string-constructor> |
ブラウザーの互換性
関連情報
- 数値と文字列ガイド