【番外編】ライトノベルで学ぶJavaScriptプログラミング入門 【オブジェクトを封印?の巻】
我がAV部の狂乱に満ちたクリスマス会も終わり、外の風景も正月準備のため、急に和風な趣きになる。
毎度のことながら不思議な国だ。
AV部はと言えば、今日は授業も最終日ということもあり、大掃除に駆り出されている。
「真琴さーん、ロッカーの奥に変な壺があるんですけど」
「壺?そんなもの部室にあったかしら」
俺たちはロッカーの前に集合し、その壺を中から引っ張りだした。
「なんかお札みたいなので口をふさい出るぞ。『まふうじ』って書いてるけど魔封じってことか?」俺は壺に張り付けている紙に手を伸ばす。
「コウタさん、それってお札で本当に何かを封印してるんじゃ?はがすととんでもなく悪いことが起こりそうですよ」愛華が心配そうな顔をする。
「かまわないわ。魔物が出てきてもコウタのとこのポコスケがどうにかしてくれるでしょ」真琴は心配そうな愛華を無視して封印のような紙をベリッとはがした。
幸いはがしてはみたが、今のところ魔物が出てこない。
代わりに雑誌が入っている。
取り出してみた雑誌の表紙には『デラべっぴん』というタイトルが見える。
パラパラとページをめくってみるとエロ本のようだ。
「なるほど、クラスの男子のうちだれかがこれを書店で購入、家で使ったあとはきっとデスノート並みに隠し場所にこまるものになる。そこで学校の部室の壺に入れて別の男子がそれを借りる。そして使ったあとはまた壺に残し性エネルギーを奪い去る『魔物』を封印するという寸法なのだよ、ワトソン君!」と真琴はパイプをくわえる名探偵のようなポーズをとる。
「そんなのどうでもいいから、雑誌もそこのゴミ袋に入れて掃除の続きだろ。なんかページがいくつか木工用ボンドでくっ付けたみたいになってるしッ」
「これは貴重な資料としてわたしが預かっておくわ。ところでJavaScriptのオブジェクトも封印できるって知ってた?」
「封印?どういうことなんですか?」愛華が首をかしげる。
「サンプルコードで説明したほうが早いわね。こういうことよ」真琴は近くの机の上に立ち上げてあるノートPCにコードを打ち込む。
真琴はChromeのコンソールにこんなコードを入力した。
var object = new Object();
object.name = 'John';
object.greet = function(){
alert('こんにちは');
}
「ここではobjectという名前のオブジェクトを生成してプロパティの値と関数を.(ドット)でつないで設定してるわ」
続いてこんなコードを打ち込んだ。
console.log(object.name);
object.greet();
実行後はobjectのnameが表示された。つまりJohnが表示される。そしてアラートの『こんにちは』が表示された。
「まぁ、こうなるよな。JavaScriptのオブジェクトは外からプロパティとか関数とかで意義できるし」
「そう、でもここで新たにプロパティ、関数の追加を禁止させたい場合も無くは無い。そういう時はこう書けばいいわ」
Object.seal(object)
「今、objectを封印したの。だから次のようなことをやっても無駄よ」
と真琴はまたコードを打ち込む。
object.bloodType = 'B';
delete object.name;
「確認してみるわ」
console.log(object.bloodType);
console.log(object.name);
結果は、object.bloodTypeの値はundefinedとなり、deleteで削除したはずのobject.nameの値は、変わらずJohnを表示していた。
「今見てきたみたいに、このseal()を使えばオブジェクトのプロパティ、関数の追加、削除を禁止することができるようになるわ。ただ注意点は『値の変更』は依然として可能ってことよ。それじゃ、掃除の続きをしてガストで納会よ!」
こうして年末大掃除は、『謎の壺』に中断され、さらに臨時JavaScript講座によっても中断されたのであった。