Global オブジェクト

Global オブジェクトは、js インスタンスにプロパティを追加し、そのプロパティにアクセスすることによってデータの共有を可能にする、きわめて一般的な Javascript オブジェクトです。Global オブジェクトのプロパティに対し、js の外部から Max メッセージによって完全にアクセスすることも可能です。Global オブジェクトに格納されたメソッドに対する Max からの実行はサポートされていません。しかし、メソッドは、当然ながら、Global オブジェクトの内部に格納することができるものの一つです。

Global コンストラクタ

g = new Global(name);

name は、Global のユニークな識別名となる文字列を表します。

Global は基本的に、直接アクセスできない Javascript オブジェクトへの参照です。このオブジェクトは、アーギュメントとして与えられた、名前を伴ったMax シンボルに結び付けられます(これは、後述するように、Max からアクセスすることが可能です)。これは、アクセスされるごとに、そのアクセスを公開されていない隠れた Javascript オブジェクトに渡します。このことは、コードの中では任意の数の Global オブジェクトを作り、任意の数のインスタンスを作ることができ、それら全てが同じ名前を持っている場合には同じデータを共有できるということを意味します。このように、Global はネームスペースと良く似ています。

例:

g = new Global("name"); g.bob = 12; h = new Global("name"); post(h.bob); // 12 をプリントします。

Global プロパティ

Global オブジェクトには、固定した既存のプロパティはありません。その代わりに、前述のように、グローバルオブジェクトにプロパティを割り当てることができ、そのプロパティは複数の js オブジェクトからアクセスできます。

Global メソッド

sendnamed (receive_name, property_name)

名前をつけられたプロパティ property_name の値を、receive_name で指定されたシンボルにバインドされている、名前を持った Max の receive オブジェクト(または他の Max オブジェクト)に送信します。

例:

g = new Global("xyz"); g.ethyl = 1000; g.sendnamed("fred","ethyl");

fred という名前を付けられたすべての receive オブジェクトのアウトレットから、1000 が送信されます。

Max からの Global オブジェクトへのアクセス

名前を持ったオブジェクトへのメッセージの送信に Max を使うためには、メッセージボックスの中に、セミコロンをタイプし、その後に受信側の名前と、送信したいメッセージを入力します。js の Global オブジェクトのプロパティをセットするためには、プロパティ名のあとに1つまたはそれ以上の値(複数の値の場合はプロパティの値を配列でセットします)を続けます。すでに、Global xyz オブジェクトが作られていると仮定すると、次のようになります。

george プロパティの値を 30 にセットします。

;xyz george 30

frank プロパティの値を、"x"、"y"、"z" という3つの文字列による配列でセットします。

;xyz frank x y z

また、Max から、メッセージ sendnamed を使って、名前を持った receive オブジェクトにプロパティの値を出力することができます。次の例では、js の Global オブジェクト xyz の中の frank プロパティが現在持っている値を、 hubert という名前を持った全ての receive オブジェクトに送信します。

; xyz sendnamed hubert frank

微妙な違いに注意して下さい。Max を使ってプロパティをセットする場合には、Javascript プロパティは変更されますが、それ以上の動作は起こりません。sendnamed()を使った場合には、receive オブジェクトが動作し、プロパティの値を出力します。