解説
「リフレクション」 (reflection) は、プログラムの中で、プログラム自体の構造や構成要素に対して、情報を得たり、値の書き換えを行ったりするような操作や機能のことを指します。こうした内容から、自己言及や自己反映計算などと翻訳されることもあります。
例えばオブジェクト指向のプログラミング言語では、クラスの配下に各種のデータや命令があります。それらの要素などをプログラムからたどって操作するのが、リフレクションという機能になります。
非常に強力な機能ですが、開発ツールのエラー検出機能などで確認できないような操作が容易に行えるため、うまく使わなければバグを生み出す原因にもなります。
サンプル
「リフレクション」のサンプルです。JavaScriptでは普通にプログラムを書いていると簡単にリフレクションを行えます。しかし、ここではあえて専用の「Reflect」オブジェクトを使い、プログラムを書いてみます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>「リフレクション」のサンプル</title>
<style> #output { font-size: 32px; line-height: 1.5; } </style>
</head>
<body>
<pre id="output"></pre>
<script>
window.addEventListener('DOMContentLoaded', e => {
const el = document.querySelector('#output');
const print = s => el.textContent += s + '\n';
class Character {
constructor(name, hp) {
this.name = name;
this.hp = hp;
}
};
const char = new Character('Ace', 99);
print('char is ' + JSON.stringify(char));
const hp = Reflect.get(char, 'hp');
print('hp is ' + hp);
Reflect.set(char, 'hp', 9);
print('char is ' + JSON.stringify(char));
});
</script>
</body>
</html>
char is {"name":"Ace","hp":99}
hp is 99
char is {"name":"Ace","hp":9}
この記事は参考になりましたか?
既に会員の方はを行ってください。
- マンガで分かるプログラミング用語辞典連載記事一覧
- この記事の著者
-
柳井 政和(ヤナイ マサカズ)
クロノス・クラウン合同会社 代表社員http://crocro.com/オンラインソフトを多数公開。プログラムを書いたり、ゲームを作ったり、記事を執筆したり、マンガを描いたり、小説を書いたりしています。「めもりーくりーなー」でオンラインソフト大賞に入賞。最近は、小説家デビューして小説も書いています(『裏切りのプログラム』他)。面白いことなら何でもOKのさすらいの企画屋です。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
