あわわわ。すみません。リファクタリングの時かなんかにやらかしてしまったようです。以下を「正式版」とさせてください。(増刷分からはこちらに差し替えてもらいます)
コード:
function FUELEventListener(aTypes, aTarget, aHandler) {
this.types = aTypes.split(/,\s*|\s+/);
this.target = aTarget;
this.handleEvent = aHandler;
}
FUELEventListener.prototype = {
init : function() {
this.types.forEach(function(aType) {
this.target.events.addListener(aType, this);
}, this);
},
destroy : function() {
this.types.forEach(function(aType) {
this.target.events.removeListener(aType, this);
}, this);
this.types = this.target = this.handleEvent = null;
}
};
var pref = Application.prefs.get('browser.sessionstore.resume_session_once');
var listener = new FUELEventListener('change', pref,
function(aEventItem) {
alert('pref is changed!');
this.destroy();
}
);
listener.init();