DeLLa.JS な日記 #4
7/5 にDeLLa.JS と Firefox3 の記念パーティーに参加してきた。
お菓子美味しかったです。(〃▽〃)
帰りに余ったコアラのマーチも貰っちゃったし、元取れた(ノ´∀`*)
しかも、お菓子の直ぐ隣の席だからお菓子食べ放題━━━━Σ(〃▽〃 )━━━━!!
で、
DeLLa.JS の勉強会はP138から、主にクロージャについてです。
Callオブジェクトがどうのこうのとか・・
ブレークポイントの例とかきもいよね。みたいな・・
そしてその後、ついに9章突入です。
はい、JavaScriptでクロージャと並んで最もきもいところですね。
その中でも特に議論されていたのが、コンストラクタの戻り値
(return で何かを返す場合、返した値(型)で動作が変わる。)
てか、自分がしつこくネタを振ってただけかも(〃 ̄ー ̄〃)
普通はコンストラクタでは return なんてしない!
だから気づかなかったが、JavaScriptはかなりきもい動作をする。
以下に例を示す。
// Hoge クラスはプリミティブ型(boolean)を返す。
function Hoge(x, y) {
this.x = x;
this.y = y;
// クラス名を設定
this.className = "Hoge";
// toString を上書き
this.toString = toString;
// コンストラクタだが、falseを返す。
return false;
}
Hoge.prototype.toString = toString;// Foo は Hoge のインスタンスを返す。
function Foo(x, y) {
this.x = x;
this.y = y;
// クラス名を設定
this.className = "Foo";
// toString を上書き
this.toString = toString;
// コンストラクタだが、Hogeのインスタンスを返す。
return new Hoge("くま?", "くまん?");
}// mixIn 用のtoString
function toString() {
return this.className + " { x : " + this.x + ", " + "y : " + this.y + " }";
}// インスタンス化
var hoge = new Hoge("X", "Y");
var foo = new Foo("XX", "YY");var BR = "\r\n";
// 表示してみる
alert([
"hoge : ", hoge,
// > Hoge { x : X, y : Y }
BR,
"foo : ", foo,
// > Hoge { x : くま?, y : くまん? }
BR,
"hoge instanceof Hoge ===> ",
hoge instanceof Hoge,
// > true
// new して、プリミティブ型の値を返した時は普通の動作。
BR,
"foo instanceof Foo ===> ",
foo instanceof Foo,
// > false
// Foo をnew したのに Foo じゃない!?
BR,
"foo instanceof Hoge ===> ",
foo instanceof Hoge,
// > true
// 実は Foo のインスタンスは Hoge だった!?
BR,
"Hoge() ===> ",
Hoge(),
// 関数として呼び出せば、false が帰ってくる。
].join(""));
つまり、コンストラクタの中で return するなと・・
return this なら大丈夫だけど。
そしてその後は、Firefox3の記念パーティー。
とまとん、ダウンロードイベントで貢献しちゃったもんねっ(*ノノ)
なんかやたらテンション高くて店員さんにクレーム貰ってる変なおっさんがいたけどきにしない・・・
奥さんも一緒に来てたけど、奥さん大変そうねぇとか思ったり思わなかったり。
そして、Firefox3のシールやらノートやらマグネットやら色々貰いました。
今日はもじら組の組長さんがわざわざ東京からきてた。
うん、組長っぽかった。
さらに、フォクすけのぬいぐるみ争奪戦。
まぁ、ただのじゃんけんだけど・・
残念ながらとまとんは手に入れることが出来なかったけど、同じ会社の同僚が一発で勝ち取ってた。
ありえないと思った。
20人くらいいたのに・・・
きっと来週からは毎日、社内でフォクすけぬいぐるみと対面することが出来るでしょう。
フォクすけキュン・・・(〃▽〃)
あれ・・・
フォクすけ!?
つД`)・゚・。・゚゚・*:.。..。.:*・゚
DeLLa.JS 勉強会の成果
頑張ってJavaScriptのお勉強した。
頑張ったおかげでJavaScriptが前よりもっと分かるようになった気がする。
どのくらい分かってきたかって言うと・・
こんな感じかな?
【出力結果】// 一人目の左手クラス
function ヾ(face) {
// 右手(表示用プロパティ。これ以上先には繋がらない。)
this.ノ = "(〃▽〃)つ";
// 右手(「ィェィ」と「.」で繋がる。)
this.face = face;
// プロパティ「ノ゜」にクラス「ノ゜」をnew
this.ノ゜ = new ノ゜() ;
// toString を上書き。
// alert( new ヾ() ) のように、#toStrigが暗黙的に呼び出されることがある。
this.toString = toString;
}// 二人目の左手クラス
function ゜ヾ(face) {
this.ノ = "(ノ´∀`*)";
this.face = face;
this.ノ゜ = new ノ゜();
this.toString = toString;
}// 二人を結ぶ愛の言葉クラス
// クラス「ヾ」または「゜ヾ」のインスタンスを返すことで、双方を「.」で繋ぐ事ができる。
// クラス「ヾ」同士、クラス「゜ヾ」同士を繋ぐ事も可能。
function ィェィ() {
// クラス「ヾ」のインスタンスを返す。
this.ヾ = function() {
return new ヾ('・ω・');
};
// クラス「 ゜ヾ」のインスタンスを返す。
this.゜ヾ = function() {
return new ゜ヾ('・ω・');
};
this.toString = function() {
return "ィェィ";
};
}// 右手クラス
function ノ゜() {
// プロパティ「ィェィ」にクラス「ィェィ」をnew
this.ィェィ = new ィェィ();
this.toString = function() {
return "ノ゜";
};
}// 「ヾ」「゜ヾ」クラスのtoString を上書きするための関数
function toString() {
// 顔文字っぽいのが帰ってくる。
return "(´" + this.face + "`)";
}
// 「ヾ」クラスを new してみる。
var face1 = new ヾ('・ω・');// 「ヾ」クラスを new してみる。
var face2 = new ゜ヾ('・ω・');// 二人仲良く
var face3 = new ヾ('・ω・').ノ゜.ィェィ.゜ヾ('・ω・').ノ;// 3人仲良く・・・
var face4 = new ヾ('・ω・').ノ゜.ィェィ.゜ヾ('・ω・').ノ゜.ィェィ.ヾ('・ω・').ノ;// 改行コード
var BR = "\r\n";// 表示してみる。
alert([
"fase1 : ", face1,
BR,
"face2 : " + face2,
BR,
BR,
"二人仲良く↓",
BR,
face3,
BR,
BR,
"三人仲良く↓",
BR,
face4
].join(""));// 表示メッセージを一旦配列(Array)にバッファしてから、
// Array#join で区切り文字を""(区切り文字なし)で結合して1つの文字列にしている。
![f:id:tomatono:20080706050322j:image f:id:tomatono:20080706050322j:image](https://cdn-ak.f.st-hatena.com/images/fotolife/t/tomatono/20080706/20080706050322.jpg)
勉強会とFirefox3記念パーティーの詳細は別の日記で後ほど・・・
自分がFirefox2の頃から使っていたアドオンでFirefox3に対応したものを色々紹介。
■All-in-One Gestures 0.1.9.1
マウスジェスチャーが出来るアドオン。
これが対応するまで、FireGestures で代用してた。
(FireGesturesは結構早くから対応されてた。)
でも、いまいち使いにくいので使えるようになってよかった。
■All-in-One Sidebar 0.76
これがないとFirefox使う気になりません。
■Firebug 1.2.0b3
最強のJavaScriptデバックツール!?
日本語版はまだ対応してないようだ。
バージョンからしてまだ開発版か?
■IE Tab 1.5.2(めんどいので略)
IEエンジンに切り替えられる。
Firefox内にIEを表示させるような感じ。
これはFirefox3リリースとほぼ同時に使えた。
■SQLite Manager 0.2.46
SQLite のクライアントツール。
これも最初の方から使えた。
これから、SQLiteがどんな使われ方されるか期待。
■Foxmarks 2.0.47.4
ブックマークの同期化ツール。
複数のパソコンでブックマークを共有できる。
これも対応が早かった。
■Tab Mix Puls 0.3.6.1(ry
ごく一部の設定しか使ってないけど、ないと困る。
(多段表示と新しいタブを開いた時にHP表示させるくらい?)
■Html Validator 0.8.5.2
HTMLの妥当性検証ツール。
■bbs2chreader 0.5pre2
2ch用アドオン。
Firefoxを2chブラウザとして使える。
ただし、開発版まだ開発版っぽい。
※バージョンは、Firefox3で対応しているアドオンの(現在の)最新バージョンです。
という具合です。
もう、自分の必要なアドオンは一通り揃ったかも。
しいて言えば、日本語対応くらいかな。
つまり、Firefox3 使えます!
かなり、使えますっ!!
Firefox2 からバージョンUPにためらっていた人。
そして、いまだにIEを使ってる か わ い そ う な 人。
Firefox3 入れましょう!!
他にもFirefox3関連のアドオンの情報を知ってる人は教えなさいっ!
あと、調べてる最中にこんなの見つけた。
Firefox3の使用感、プラグインの状況等CommentsAdd Star
ここでも使えるアドオンの一覧が載ってる。
参考にしよう!
上記のサイトではTab Mix PlusがNGになってるけど、
開発版を直接拾ってこれば使えるよ!