• ベストアンサー

トリッキーなJSの文法(prototype.jsなど)が分かりません

Ajaxの「prototype」( http://www.prototypejs.org/ )などで 下記のようなfunctionの記述方法をよく見かけます。 ▼Prototype.js(ver1.5.0) 20行目抜粋 ---------------------------------------- var Class = {  create: function() {   return function() {    this.initialize.apply(this, arguments);   }  } } -------------------------------------------- でも、私には高度すぎて以下の点がどうしても読み解けません。  (1)var Class = {~~~~~~} が、何をしているのか分かりません。    配列なら[ ]ですし関数か何かを省略した宣言の記述方法なのでしょうか?  (2)create: が何なのか分かりません。必死で調べたら型を宣言しているような感じでしたが、    見慣れない「:」を使ったプログラムで検討もつきません。 私が知っているfunction宣言はこの2パターンのみしか知りません。 ・一般的なfunction宣言  function test(hikisu){   //処理内容  } ・無名関数でのfunction宣言  var a = function(x) {   //処理内容  } ぜひ教えていただけませんでしょうか。 どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ESate
  • ベストアンサー率64% (11/17)
回答No.1

1. {}はオブジェクト初期化子である。つまりnew Object()と同じ 2.{variable : value}と書くので変数名と値の区切りに:を使っている。 valueのところにfunction(){}を書いても全く問題ない。 以下を参考に var array = new Array(); var array = []; // 配列の初期化子 array = [1, 2]; // まとめて初期化 array[0] // => 1 array[1] // => 2 var object = new Object(); var object = {}; // オブジェクトの初期化子 object = {a : 1, b : 2}; // まとめて初期化 object.a // => 1 object.b // => 2

noname#45474
質問者

お礼

var Class = {~~~~~~} はnew Object()のことだったんですね。 変数への代入も、「=」を使わず「:」で行う方法も知りませんでした。 (型の宣言かなにかと大勘違いしてました・・・) 大変助かりました。どうもありがとうございました。

その他の回答 (1)

noname#30818
noname#30818
回答No.2

ここに[翻訳]JSON入門というページがあります。 http://d.hatena.ne.jp/brazil/20050915/1126709945 その中に オブジェクト { メンバ } {} メンバ 文字列 : 値 メンバ , 文字列 : 値 配列 [ 要素 ] [] 要素 値 要素 , 値 値 文字列 数値 オブジェクト 配列 true false null こんな記述があります。 この中で値にオブジェクトがあります。 ではオブジェクトとは何かと言うと、ここに”オブジェクトモデルの詳細”と言うページがあります。 http://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Guide:Details_of_the_Object_Model こんなことだと思いますよ。

noname#45474
質問者

お礼

JSONは聞いたことがある程度で、ぜんぜん知りませんでした。 また、教えていただいた[翻訳]JSON入門サイト(http://d.hatena.ne.jp/brazil/20050915/1126709945)に、記述文法の構造図が分かりやすく掲載されていました!!! かなり検索しまくっても見つからなかったので感激です。 全記述方法が載っているのでとても重宝しています。 どうもありがとうございました。