« JavaScript 製 XPCOM で配列構造・列挙構造のデータをメソッドの戻り値にする | ロッカージェスチャの実装 Part 2 » |
【つづき】 JavaScript 製 XPCOM で配列構造・列挙構造のデータをメソッドの戻り値にする
前回のエントリでコメントを頂いていたのに気付くのが遅く、だいぶ日があいてしまったが、配列構造のデータをメソッドの戻り値にするためには nsIArray よりも nsIVariant 型を使うのが手っ取り早そうである。
IDL
nsIVariant getFruitsArray();
XPCOM 実装
getFruitsArray: function() { var createStringObject = function(aStr) { var obj = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString); obj.data = aStr; return obj; }; var items = [ createStringObject("apple"), createStringObject("orange"), createStringObject("banana"), ]; return items; },
利用する側の JavaScript
var svc = Cc["********"].getService(Ci.********); var arr = svc.getFruitsArray(); arr.forEach(function(elt) { alert(elt.data); });