【つづき】 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);
});

TOP

TOP