拡張機能や XUL アプリにて、 JavaScript から特定の XPCOM サービスを頻繁に使用するケースがよくあります。そのような場合に処理やソースコードを効率化するためのテクニックをいくつか紹介します。ここでは、例として nsIObserverService を頻繁に利用するケースを想定します。なお、Cc は Components.classes, Ci は Components.interfaces への参照です。 方式1: 毎回 XPCOM サービスを呼び出す 特に工夫をしない場合、以下のように XPCOM サービスを利用するたびに毎回そのスコープ内で呼び出し手続きを行うことになります。 var MyExtension = { init: function() { var observerSvc = Cc["@mozilla.org/observer-service;1"].