String() コンストラクター
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
String
コンストラクターは新しいString
オブジェクトを生成します。関数として呼び出された場合は、文字列型のプリミティブ値を返します。
構文
引数
thing
文字列に変換するもの。
返値
String
がコンストラクターとして(new
付きで)呼び出された場合、String
オブジェクトを生成します。これはプリミティブではありません。
String
が関数として呼び出された場合、引数を文字列プリミティブに変換します。シンボル値は例外を発生させず、"Symbol(description)"
の形に変換され、このdescription
はそのシンボルのdescription となります。
警告:String
をコンストラクターとして使用する場面はほとんど見つからないでしょう。
例
String コンストラクターと String 関数
String 関数と String コンストラクターは異なる結果を生み出します。
const a = new String("Hello world"); // a === "Hello world" is falseconst b = String("Hello world"); // b === "Hello world" is truea instanceof String; // is trueb instanceof String; // is falsetypeof a; // "object"typeof b; // "string"
ここでは、この関数は約束通り (プリミティブ型の) 文字列を生成します。しかし、コンストラクターは String 型 (オブジェクトのラッパー) のインスタンスを生成しますので、 String コンストラクターを使用するのは稀だといえます。
String() を用いてシンボルを文字列化
String()
はシンボルを文字列に例外を発生させることなく変換することができる唯一の方法です。とても明示的だからです。
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
const sym = Symbol("example");String(sym); // "Symbol(example)"
仕様書
Specification |
---|
ECMAScript® 2026 Language Specification # sec-string-constructor |