| « 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);
});