javascriptのGreasemonkeyやjavascriptのライブラリを見ていると


(function(xxxx){
yyyy.zzzz = {
aaaa:[]
,bbbb:[]
,cccc:'dddd'
,eeee:false
,ffff:true
};
})(this);

このような書き方とか

var xxxx = aaaa.bbbb.cccc([
'dddd//eeee//ffff//gggg'
]);

このような[]大括弧で挟んでいるような記述とか
よく見かけたりするのですが、パッと見て何をしているのかわかりません。このような記述の読み方とか書き方などが載っている教本やチュートリアルってあるのでしょうか、どこで調べたら良いのでしょう

無名関数だとか関数の戻り値が変数に代入できる、ということはなんとなくわかっているレベルです

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2009/04/22 21:56:41
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:gatchan No.4

回答回数9ベストアンサー獲得回数1

ポイント40pt

まず例文を分解してみます。(上の例)

(function(xxxx){//----------【1ここから】
  yyyy.zzzz = {//---【2ここから】
  aaaa:[]
  ,bbbb:[]
  ,cccc:'dddd'
  ,eeee:false
  ,ffff:true
  };//---【2ここまで】
})();//----------【1ここまで】

※thisはややこしいのではずしました。

 

  

外のつくりから中へ見ていきます。

 

一番外【1】

(function(xxxx){

})();

function(xxxx){}を()でくくり();で実行します。(ややこしいですね)

これは無名関数を定義して、同時に実行しているということです。

  たとえば、aaaという関数を定義して同時に実行させるには

(function aaa(){/*関数の内容*/})();

  でOKです。

 

 

では、次【2】

yyyy.zzzz = {

};

これはyyyyというオブジェクトのzzzzプロパティを設定しています。

{}の中身を,(カンマ)で区切ってその数だけ分プロパティとして設定できます。

  たとえば、オブジェクトObjに3つのプロパティを設定します。

Obj={moji1,moji2,moji3};

  さらにプロパティに意味を持たせるような書き方

Obj={moji1:"おはよう",moji2:"こんにちは",moji3:"こんばんは"};

    実際にどう使うか?

alert(Obj.moji1);//「おはよう」が表示される

 

おおまかにいえば【1】と【2】の構成です。

【2】の中でプロパティをいろいろ設定して無名関数を実行させてるだけです。

そのなかで配列[]やオブジェクト{}で書いている。

 

  

オブジェクトの書き方というのはJavaScriptの一機能にすぎないので書籍はわかりませんが

http://f32.aaa.livedoor.jp/~azusa/index.php?p=array&t=js

こういったサイトをみているとつかめてくると思います。

 

次に

http://www.tokumaru.org/JavaScript/

こういったサイトなど。

 

こういったサイトをとっかかりとしてわからない「書き方」があれば検索する、ということを少し繰り返せばわかってくると思います。

 

  

いかがでしょう。

id:tiritomato

細かく書いていただいて大変わかりやすいです。

ありがとうございました。

2009/04/22 21:55:15

その他の回答4件)

id:van-dine No.1

回答回数108ベストアンサー獲得回数11

ポイント20pt

[~]は配列を、{~}はオブジェクトを簡易的に作るものです。

例えば、Array("a", "b", "c")のように、[1, 2, 3]で配列を作ったり、

{ name : "misha", age : 17 }で、nameプロパティとageプロパティを持つ

オブジェクトを作ることができます。

id:tiritomato

[~]は配列を作ってるんですね。なるほどー。

ありがとうございました。

2009/04/22 08:40:43
id:fester No.2

回答回数124ベストアンサー獲得回数20

ポイント20pt

こちらでいかがでしょうか

JSONの記法

戯れ言++入門 JSON

id:tiritomato

JSONと同じ書き方なんですね。参考にしてみます。

ありがとうございました。

2009/04/22 21:52:03
id:hideo-apa No.3

回答回数24ベストアンサー獲得回数2

id:tiritomato

おもしろそうです。読んでみます

2009/04/22 21:53:23
id:gatchan No.4

回答回数9ベストアンサー獲得回数1ここでベストアンサー

ポイント40pt

まず例文を分解してみます。(上の例)

(function(xxxx){//----------【1ここから】
  yyyy.zzzz = {//---【2ここから】
  aaaa:[]
  ,bbbb:[]
  ,cccc:'dddd'
  ,eeee:false
  ,ffff:true
  };//---【2ここまで】
})();//----------【1ここまで】

※thisはややこしいのではずしました。

 

  

外のつくりから中へ見ていきます。

 

一番外【1】

(function(xxxx){

})();

function(xxxx){}を()でくくり();で実行します。(ややこしいですね)

これは無名関数を定義して、同時に実行しているということです。

  たとえば、aaaという関数を定義して同時に実行させるには

(function aaa(){/*関数の内容*/})();

  でOKです。

 

 

では、次【2】

yyyy.zzzz = {

};

これはyyyyというオブジェクトのzzzzプロパティを設定しています。

{}の中身を,(カンマ)で区切ってその数だけ分プロパティとして設定できます。

  たとえば、オブジェクトObjに3つのプロパティを設定します。

Obj={moji1,moji2,moji3};

  さらにプロパティに意味を持たせるような書き方

Obj={moji1:"おはよう",moji2:"こんにちは",moji3:"こんばんは"};

    実際にどう使うか?

alert(Obj.moji1);//「おはよう」が表示される

 

おおまかにいえば【1】と【2】の構成です。

【2】の中でプロパティをいろいろ設定して無名関数を実行させてるだけです。

そのなかで配列[]やオブジェクト{}で書いている。

 

  

オブジェクトの書き方というのはJavaScriptの一機能にすぎないので書籍はわかりませんが

http://f32.aaa.livedoor.jp/~azusa/index.php?p=array&t=js

こういったサイトをみているとつかめてくると思います。

 

次に

http://www.tokumaru.org/JavaScript/

こういったサイトなど。

 

こういったサイトをとっかかりとしてわからない「書き方」があれば検索する、ということを少し繰り返せばわかってくると思います。

 

  

いかがでしょう。

id:tiritomato

細かく書いていただいて大変わかりやすいです。

ありがとうございました。

2009/04/22 21:55:15
id:gatchan No.5

回答回数9ベストアンサー獲得回数1

ポイント40pt

すみません、見直したらミスがありましたので訂正します。

 

下記の書式は間違っています。

Obj={moji1,moji2,moji3};//間違った書き方

 

{}で囲むときは{キー:値}とかかなければいけません。

 

単純,カンマ区切りなら[]での配列にすべきです。

 

 

失礼しました><;

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません