次の方法で共有


プログラミングに関する規則

このトピックでは、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 でサポートされていないため、これらの参照はローカルである必要があります。

ファイルは以下のアドレスからダウンロードできます。

各ハイパーリングを右クリックして [対象をファイルに保存] をクリックすると、ファイルをローカル コンピュータに保存できます。

コーディング技術

このセクションでは、このドキュメントのコード例に共通して使用されているユーティリティおよび技術について説明します。

名前空間

名前空間は、グローバル オブジェクトを拡張した 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');