« Webアプリのセッション管理はデスクトップアプリのメモリ管理と同じ | トップページ | 【再考】XPプラクティスの相関関係 »

2008/02/25

Kanasan.JS JavaScript第5版読書会#3 行ってきた

Kanasan.JS JavaScript第5版読書会#3 があったので行ってきた。
前夜は大阪でも雪が積もり、この日も晴れたものの寒い(;_;

この寒い中、30人も集まりましたよ。
自己紹介を聞いていたら、東京から来た人3名、名古屋や三重県から来た人3名もいたよ!

今日も通称サイ本の輪読。
当日の勉強会の内容を書いてみる。

【1】applyとcallをどう覚えればいい?

applyもcallも、関数呼び出しをあるオブジェクトのメソッドのように扱うこと。

f.call(o, 1, 2) は下記と同じ。

o.m = f;
o.m(1, 2);
delete o.m;

applyとcallの違いは、Ujihisa君がLispで書いた説明が分かりやすかった。

(apply f a b c '(d))
(call f '(a b c d))

つまり、applyは引数が配列、callは引数の羅列。

yharaさんのAnswerが端的ズバリ。

 Schemeを知っていればapplyは簡単.Rubyを知っていればcallは簡単.

applyもcallも、関数をオブジェクトと見なせる点がJavaと異なる。
また、カリー化の話もあった。

他にcalleeの話題もあった。


【2】関数の引数に関数をセットできること~スクリプト言語の最大の特徴

Array.sort()の話。
引数に、ソートしたいロジックを無名関数にして入れたら、ソートできる。

これは、元々Perlから派生した手法だと思う。
ブロックをうまく利用したやり方。
JavaScriptの場合、変数も関数もオブジェクトみたいなものだから、関数をプロパティへセットすることも可能。

Javaならば、無名関数ではなく、メソッドだけのクラスを作り、そのクラスを引数にセットするやり方しかない。
Javaの方が冗長。
RubyはPerlJavaScriptと同じ。

あと驚いたのが、JavaScriptはオーバーロードできない。
たしかに、JavaScriptは、引数の型がないし、引数の数も見ないから、やりようがないのだが。


次回は、本命のプロトタイプベースのオブジェクト指向のお話。
面白くなってきた(^o^)丿

|

« Webアプリのセッション管理はデスクトップアプリのメモリ管理と同じ | トップページ | 【再考】XPプラクティスの相関関係 »

コミュニティ」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: Kanasan.JS JavaScript第5版読書会#3 行ってきた:

« Webアプリのセッション管理はデスクトップアプリのメモリ管理と同じ | トップページ | 【再考】XPプラクティスの相関関係 »