解説
「ラッパークラス」(wrapper class)や、「ラッパーオブジェクト」(wrapper object)は、オブジェクトではないけれど、オブジェクトとしてあつかいたい値を、包む(wrapする)クラスやオブジェクトのことです。
たとえば文字列がオブジェクトではない値(プリミティブ値)のプログラミング言語があったとします。そうしたプログラミング言語で、「hogeString.split(',')」のように、文字列に対してメソッドを使いたいとします。
そうした場合、文字列を包んでオブジェクトとしてあつかうためのStringクラスを用意して、「new String(hogeString).split(',')」のように、文字列をオブジェクトに変換してメソッドを使うという方法がとれます。
こうしたとき、Stringはラッパークラスと呼ばれます。
プログラミング言語によっては、プリミティブ値のあとにプロパティやメソッドを書くと、自動的にラッパーオブジェクトにして、プロパティやメソッドを使えるようにするケースもあります。
そうしたプログラミング言語では、ラッパークラスやラッパーオブジェクトを意識することはないですが、知識として知っておくとよいです。
サンプル
「ラッパークラスやラッパーオブジェクト」のサンプルです。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>「ラッパークラスやラッパーオブジェクト」のサンプル</title> <style> #output { font-size: 32px; line-height: 1.5; white-space: pre-wrap; } </style> </head> <body> <pre id="output"></pre> <script> window.addEventListener('DOMContentLoaded', e => { // 出力用の関数 const print = function() { const el = document.querySelector('#output'); el.textContent += [...arguments].map(x => `${x}`).join(', ') + '\n'; }; // プリミティブ値の文字列と、Stringオブジェクト let text1 = 'hoge hoge'; let text2 = new String(text1); print('text1の型', typeof text1); print('text2の型', typeof text2); // Stringオブジェクトのプロパティやメソッドの一覧 let props = Object.entries(Object.getOwnPropertyDescriptors(Object.getPrototypeOf(text2))).map(x => x[0]).join(', '); print('Stringオブジェクトのプロパティやメソッドの一覧', props); }); </script> </body> </html>
text1の型, string text2の型, object Stringオブジェクトのプロパティやメソッドの一覧, length, constructor, anchor, at, big, blink, bold, charAt, charCodeAt, codePointAt, concat, endsWith, fontcolor, fontsize, fixed, includes, indexOf, isWellFormed, italics, lastIndexOf, link, localeCompare, match, matchAll, normalize, padEnd, padStart, repeat, replace, replaceAll, search, slice, small, split, strike, sub, substr, substring, sup, startsWith, toString, toWellFormed, trim, trimStart, trimLeft, trimEnd, trimRight, toLocaleLowerCase, toLocaleUpperCase, toLowerCase, toUpperCase, valueOf
フィードバックお待ちしております!
ご感想、解説してほしい用語、解説内容のアドバイスなどございましたら、FacebookやX(旧Twitter)などでお気軽に編集部までお寄せください。よろしくお願いいたします。