JavaScriptで文字列のプリミティブ値を取得する方法|valueOf()の使い方を解説
JavaScriptにおけるプリミティブ型とは
JavaScriptには、undefined・null・boolean(真偽値)・string(文字列)・number(数値)の5つのプリミティブ型が存在します。これら以外の値は、すべてオブジェクトとして扱われます。
boolean、string、numberの各プリミティブ型は、それぞれBoolean、String、Numberというコンストラクタから生成される「ラッパーオブジェクト」で包む(ラップする)ことが可能です。
そして、ラッパーオブジェクトから元のプリミティブ値を取り出したい場合には、そのオブジェクトに対してvalueOf()メソッドを呼び出します。
コード例
console.log(typeof true);
console.log(typeof new Boolean(true));
console.log(typeof (new Boolean(true)).valueOf());
console.log(typeof "abc");
console.log(typeof new String("abc"));
console.log(typeof (new String("abc")).valueOf());
console.log(typeof 123);
console.log(typeof new Number(123));
console.log(typeof (new Number(123)).valueOf());実行結果
"boolean" "object" "boolean" "string" "object" "string" "number" "object" "number"
実行結果のポイント
この結果から分かるように、プリミティブ値に対してtypeof演算子を使用すると「boolean」「string」「number」が返されますが、ラッパーオブジェクトに対して使用すると「object」が返ります。しかし、valueOf()メソッドで値を取り出せば、再びプリミティブ型へと戻ることが確認できます。
プリミティブ値にもプロパティがある理由
ここで疑問になるのが、「プリミティブ値なのにプロパティやメソッドを持っているように見えるのはなぜか」という点です。これは、JavaScriptが状況に応じてプリミティブとオブジェクトの間で自動的に型変換(ボックス化)を行う仕組みによるものです。
たとえば、文字列のプリミティブ値に対してlengthプロパティへアクセスした瞬間、その値は一時的にStringオブジェクトへとラップされます。プロパティへのアクセスが完了すると、すぐに再びプリミティブへと戻されるのです。この仕組みのおかげで、開発者はラッパーオブジェクトを意識することなく、プリミティブ値に対しても便利なプロパティやメソッドを利用できます。
-
【JavaScript】ドキュメント全体のHTMLを文字列として取得する方法を解説
Webページのソースコード全体を取得して処理したい場面は、デバッグや動的なコンテンツ操作など、JavaScript開発では意外と多くあります。この記事では、ドキュメント全体のHTMLを文字列として取得する方法を、具体的なコード例とともにわかりやすく解説します。 innerHTMLプロパティを使った取得方法 ドキュメント全体のHTMLを文字列として取得するには、document.documentElementのinnerHTMLプロパティを利用します。 document.documentElement.innerHTML; document.documentElementはHTML文書のルート要
-
JavaScriptでhref属性の値を取得する方法|jQueryのattr()メソッド活用ガイド
Web開発では、アンカータグ(<a>)に設定されたリンク先URL、つまりhref属性の値を取得したい場面がよくあります。この記事では、jQueryのattr()メソッドを使って、簡単にhrefの値を取得する方法を解説します。対象となるHTMLの例たとえば、以下のようなアンカータグがあったとします。<a class=demo title=get the url href=./mainPage.jsp/1245>href value at console</a>ここで必要なのは、テキスト部分ではなく、URLそのもの、すなわちhref属性の値「./mainPage