- function ohsoto(){
- var result = 0;
- for(var w=0;w<arguments.length;w++){
- result += arguments[w];
- }
- this.result = result;
- }
- var n1 = {};
- var n2 = {};
- ohsoto(1,2,1);//1
- assert(true,this.result);
- ohsoto.apply(n1,[1,2,3,4,"five"]);//2
- ohsoto.call(n2,1,2,3,4);//3
- ohsoto.call(this,1,2,3);//4
- assert(true,n1.result);
- assert(true,n2.result);
- assert(true,this.result);
●2のapply。これはあとからn1がthisとして呼ばれていることがわかります。
●3のcall。これも2と同様、n2がthisとして呼ばれていることがわかります。
●4のcall。これは、Globalなthisで呼んでるのがわかります。実はこれだけでは、thisを指定して呼べる以外、何の意味があるかわかりません。
でも、CALLBACKとかすると、初めてなんとなく意味がわかります。
とりあえず、結果は以下。

★では、callBackを使用したサンプルコード
- function foreacher(list,callback){
- for(var w=0;w<list.length;w++){
- callback.call(list[w],w);
- }
- }
- var waza=["背負投","払腰","袖釣込腰","内股すかし","出足払い"];
- foreacher(waza,
- function(idx){
- assert(this == waza[idx],waza[idx]);
- }
- );

●うん。なんとなく使い方がわかってきた。
javascriptをjavascriptらしくかくと、たぶん、無名関数が続出する結果となる。(と思う(o^^o)
よって、無名関数内でのthisと変数スコープは重要。この件はまたそのうち。
しかし、よく見ると上記のサンプルは妙である。
【javascriptのthisってなんだかわけわからん】
ともいえる。
これは次回にしよう。。(o^^o)
0 件のコメント:
コメントを投稿