2010年6月5日土曜日

8. 後日談

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

オブジェクトのメンバ宣言をするときに以下の例ようにしてSettingとGettingを簡単に宣言し、利用方法も簡単になります。
  1. function MyObject() {  
  2. }  
  3.   
  4. MyObject.prototype = {  
  5.  get id() {  
  6.   return this._id;  
  7.  },  
  8.  set id(x) {  
  9.   this._id = x;  
  10.  },  
  11. }  
  12.   
  13. function myCode() {  
  14.  myObject = new MyObject();  
  15.  myObject.id = 3;  
  16.  alert('id is ' + myObject.id);  
  17. }  
上の式でメンバ変数を宣言できますし、WebKitのサンプルコードsticky-notesのようにメソッドも宣言できます。

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

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

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

0 件のコメント: