プログラミングに関する規則
このトピックでは、Windows Live Messenger Library を利用した JavaScript によるプログラミングに適用されるコーディング上の規則を説明します。Messenger Library では、独自のアプリケーションを書くときに使用できるモジュールと名前空間のユーティリティを採用しています。
JavaScript Intellisense
Visual Studio 2008 を使用している場合は、1 対の JavaScript ファイルをプロジェクトに追加し、作業中の JavaScript ファイルの先頭に以下の行を追加することで、Messenger Library で JavaScript Intellisense を有効にすることができます。
/// <reference path="sscorlib.js" />
/// <reference path="Microsoft.Live.Messenger.documentation.js" />
現在はリモート ファイルの参照が JavaScript Intellisense でサポートされていないため、これらの参照はローカルである必要があります。
ファイルは以下のアドレスからダウンロードできます。
- http://settings.messenger.live.com/api/1.0/sscorlib.js
- http://settings.messenger.live.com/api/1.0/Microsoft.Live.Messenger.documentation.js
各ハイパーリングを右クリックして [対象をファイルに保存] をクリックすると、ファイルをローカル コンピュータに保存できます。
コーディング技術
このセクションでは、このドキュメントのコード例に共通して使用されているユーティリティおよび技術について説明します。
名前空間
名前空間は、グローバル オブジェクトを拡張した Type オブジェクトによって表されます。以下の例のように、Type.createNamespace メソッドを使用して名前空間を作成することができます。
Type.createNamespace('A_Namespace');
型とクラス
以下に示すように、関数をクラスとして登録することで、名前空間にクラスを追加することができます。
A_Namespace.HelloWorld = function () {
...
}
型メンバーは、この関数に関連付けられるプロトタイプで定義します。以下のように、クラスにメンバーを追加できます。
A_Namespace.HelloWorld.A_Function = function () {
...
}
プロパティ
プロパティは、1 対の get/set アクセサ メソッドとしてモデル化されています。これらのアクセサの定義と呼び出しでは、"get_" と "set_" をプレフィックスとして付けるという名前付け規則を使用します。以下に例を示します。
Demo.Person = function() {
}
Demo.Person.prototype = {
_name:null,
get_name:function() { return this._name; }
set_name:function(value) { this._name = value; }
};
Demo.Person.createClass('Demo.Person');
var p;
p.set_name('Makoto Yamagishi');
以下の例では、get_presence および get_status アクセサ メソッドを使用して、ユーザーの PresenceStatus を取得しています。ユーザーの状態が "offline" ではない場合、set_status アクセサ メソッドを使用してオンライン状態を設定します。
if (HelloWorld.App._user.get_presence().get_status() !== Microsoft.Live.Messenger.PresenceStatus.offline) {
HelloWorld.App._user.get_presence().set_status(presenceStatus
[selectStatus.selectedIndex]);
}
デリゲート
関数への参照を渡してデリゲートを作成することができます。作成されたデリゲートはオブジェクト インスタンスと関数参照を追跡します。デリゲートを作成すると、イベント ハンドラとして使用したり、別のコンポーネントへのコールバックとして使用したりできます。以下の例では、user_Presence_PropertyChanged 関数を呼び出すデリゲートを追加して、User オブジェクトの PropertyChanged イベントにサブスクライブしています。
HelloWorld.App._user.get_presence().add_propertyChanged(Delegate.create(null, HelloWorld.App.user_Presence_PropertyChanged));
列挙子
列挙子は、列挙フィールドに対応する名前付きメンバーを持つオブジェクトによって表されます。以下の例では、ユーザーに関連付けられているメンバーを示す列挙子を作成します。その後で while ステートメントを使用して列挙子内を移動し、各ユーザー (メンバー) の現在のアドレスを取得しています。
var $enum1 = HelloWorld.App._user.get_contacts().getEnumerator();
while ($enum1.moveNext()) {
var c = $enum1.get_current();
var address = c.get_currentAddress();
}
GetElementByID
ドル記号 ("$") は、以下に示すように、document.getElementByID() のエイリアスとして使用されます。
var selectStatus = $('selectStatus');