2010年6月5日土曜日

8. 後日談

<最初にもどる> <pre>
謎などと大袈裟な事を書きましたが、どうしても定義が見つからなかった構文があったのです。以下のオブジェクトのメンバ宣言です。何処かにあるはずなのですが、見つかりません。

オブジェクトのメンバ宣言をするときに以下の例ようにしてSettingとGettingを簡単に宣言し、利用方法も簡単になります。
function MyObject() {
}

MyObject.prototype = {
 get id() {
  return this._id;
 },
 set id(x) {
  this._id = x;
 },
}

function myCode() {
 myObject = new MyObject();
 myObject.id = 3;
 alert('id is ' + myObject.id);
}
上の式でメンバ変数を宣言できますし、WebKitのサンプルコードsticky-notesのようにメソッドも宣言できます。

この便利な点はメンバ変数とそのset getが羅列するだけで簡単に宣言できる点です。また、下のtest()のように簡単にメンバ変数への代入と呼び出しができます。ただし、上の関数を使えるのは一度だけのようです。同じオブジェクトに追加宣言はできず、追加できるのはメソッドのMyObject.prototype.methodNameだけのようです。

ストレステストはしていませんが、上記のサンプルコード程度ならFirfox 3.6.3でも動作しました。

ECMAScriptにおける「オブジェクトリテラル」と言う書式では、配列を拡張してオブジェクトを宣言できます。
myObject = {
 myVar: -- numbers,
 myVar: '-- words',
 myFunc: function() {
  -- definition
 }
}
似てはいるのですがどうも違うように思います。
<最初にもどる> <pre>

0 件のコメント: