« どっかの偉い人?誰それ | メイン | 夏季ゲーム妄想 »

2005年07月19日

JavaScript篇

学習に使った物

ttp://www.site-cooler.com/kwl/javascript/
簡易講座なのでどこまで厳密で、どこまで最近の仕様に対応しているかは不明。
あくまでこの講座を見てのメモ。

基本的な文法

CのようなJAVAのような、まあ、ありきたりな文法。
変数宣言は必要無い。
型はvarのみ。

JAVA?

よく言われている事だが、勿論JAVAでは無い。
Netscape社の陰謀らしい。何て迷惑な事をしてくれるんだ。
でも、array.lengthとかできるのはJAVAっぽい。
new演算子あるし。

配列

添え字のチェック無し。
連想配列とか見てると宣言時の要素数は何の意味があるのかわからなくなってくる。
当然

var array = new Array(0);
array[0] = "Zero";
array[1] = "One";
array[2] = "Two";

は可能だし、

array["Zero"] = 0;
array["One"] = 1;
array["Two"] = 2;

も行ける。
これで大丈夫なのかはよくわからないけれど、きっと大丈夫なのだろう。

さらに、この配列には便利な機能が搭載されている。
sortとreverseはどんなアルゴリズムを使っているのかは知らねど、ソートしてくれるし、
join('/')で全要素の結合も可能。
区切り文字だけでなく、文字列も使えたらいいのに。
もっとも、単純にCVS形式とかに変換してファイルに出力とかに使うのを想定してるのかな?

条件分岐

一般的なif-else,switchが使える。
elseにぶら下げてelse ifも可。
(当然、一行の場合には{ }を書かなくてもいいって事)

ループ

for/while/do-while

Cと同じような感じ。
厳密に全く同じかまではわからないけれど。

関数

記憶クラスやら戻り値の型指定やらは無し。

function myfunc(val1,val2,...){

}

こんな感じで書く。
どうせ型はvarしか無いしって事で引数リストに型は書かない(書けない)。
returnも当然普通に使える。

スコープ
最近のインタプリタなら関数内の変数はローカルにしてくれる事と思います。
グローバル変数の扱いについてはCと同じですね。
(もっとも、この場合Cで考えるとmain関数内の変数がグローバル変数になる、わけですが)

イベントドリブン

なんかタグに対して書くのが変な感じ。
フォームの要素に対して書くとVBっぽいイメージで直感的に理解できますが、
アンカータグなど、普段普通にクリックする対象、されど目的は一意であった為に違和感を感じますね。

<a href="#" onClick=HookClick()>Click here!</a>
こんな感じ。
もちろん、
<font color="#0000FF" onClick=HookClick()>こっちでもいいです</font>
こんなのもあり。
#fontタグを使うなってのは無し

普通に使いそうなイベント

フォームとの連携

documentは、そのHTMLファイルを表す。
name属性を使って階層を掘れるみたい。
document.writeはdocumentオブジェクトの持つwriteメソッドです。言うまでも無いか。
だから、name属性にwriteとか指定したらダメですよ!

inputbox

function ShowForm(){
	document.write(document.frm.txt.value);
}

<form name="write">
	<input type=text name="txt" /><br>
</form>

<font color="#0000FF" onClick=ShowForm()>クリックしてね</font>

こんなの。
偽リンクボタン、ちょっと気に入ったかも(笑)
厨房的ですね。

あと、最初の方でJSの型はvarのみと書きましたが、
当然オブジェクトへの参照もvar型なのでオブジェクトを渡せます。

function ShowForm(obj);
に対して
ShowForm(txt);
といった所。

関数においてはobj.valueとするわけですな。

もちろん、valueからの読み込みだけでなく書き込みもできます。
単にobj.valueに代入するだけ。簡単ですね。

radio button

参照においては、thisを使えます。
さっきので言うとShowForm(this)ですね。
もっとも、あの場面では使えませんが。
ラジオボタンにおいてはこれを有効に使えます。

<form name=frm>
<input type="radio" name="rd" value="rd1" onClick=rd_Click(this)><br>
<input type="radio" name="rd" value="rd2" onClick=rd_Click(this)><br>
<input type="button" value="Click" onClick=ShowResult()><br>
</form>

これ、実際問題name=rd1,rd2とやってthisじゃなくてそっち渡しても当然行けるわけですが、
悲しい事にnameを同じにしておかないと複数選択が可能なラジオボタンになっちゃうんですよね。
もちろん表示上だけの話なんですが。
なので、thisを渡すのがいいでしょう。

check box

なんかもう、ここまで書いたら蛇足でしかないんですけど、
別に参照できるのはvalueだけなわけでは無いのです。
はい、当然チェックボックスのchekedプロパティも同様に扱えます。それだけ。
ただし、格納されている値はTrue/Falseですよ。まあ、当然と言えば当然なんですけど。

form

frm.elements

要は複数のコントロールを処理するコードをループに突っ込んで楽しようって話です。

document

documentオブジェクト

ウィンドウ操作

鬱陶しいサイトを構築する最も手っ取り早い手段。
ブラクラも簡単に作れる。

操作対象オブジェクトは
window

ここから下はあんまり使わない方がいいんじゃない?と思う。
というより、使って欲しくない。鬱陶しくなるから。

while(1){

window.open("./brcr.html");
//^^
}

戻り値にウィンドウハンドルを取る。
これを利用して開いたウィンドウを操作する事も可能。
なんてこった。

タイマー

ウィンドウオブジェクトのメソッドのはずなんだけど……。
setTimeout単体で指定できます。

普通、タイマと言えばこっちでしょう。
第一引数は指定周期毎に実行する関数、
第二引数は周期指定。
返り値はタイマID。きっちり削除して後を濁さないよう。

RegExp

正規表現、だけれどこれは今はいいでしょう。
一つ言える事は、他と大して変わんない。

投稿者 miff : 2005年07月19日 21:49

コメント



XREAAD