From ef02e5e325828a9d5eb0f6c72d7f0e82078a9f1f Mon Sep 17 00:00:00 2001 From: Vincent Lark Date: Mon, 11 Aug 2014 23:39:36 +0200 Subject: [PATCH] fix and test case for #19 --- microevent.js | 3 ++- tests/unbound-listener.js | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 tests/unbound-listener.js diff --git a/microevent.js b/microevent.js index 45ab5d9..790867c 100755 --- a/microevent.js +++ b/microevent.js @@ -19,7 +19,8 @@ MicroEvent.prototype = { unbind : function(event, fct){ this._events = this._events || {}; if( event in this._events === false ) return; - this._events[event].splice(this._events[event].indexOf(fct), 1); + var index = this._events[event].indexOf(fct); + if( index > -1 ) this._events[event].splice(index, 1); }, trigger : function(event /* , args... */){ this._events = this._events || {}; diff --git a/tests/unbound-listener.js b/tests/unbound-listener.js new file mode 100644 index 0000000..5a85b1e --- /dev/null +++ b/tests/unbound-listener.js @@ -0,0 +1,22 @@ +var MicroEvent = require('../microevent.js') + +function Foo () {} +MicroEvent.mixin(Foo) +f = new Foo + +var legit_listener = function(){ + console.log("I'm legit"); +} + +var unbound_listener = function(){ + console.log("I'm not so legit"); +} + +f.bind("event", legit_listener) + +f.unbind("event", unbound_listener) + +console.log("You should see \"I'm legit\":") +console.log("") + +f.trigger("event") \ No newline at end of file