From 72f43c24e9f8dd7923730b59c2206ad00428d391 Mon Sep 17 00:00:00 2001 From: NadyaNikishina <45035053+NadyaNikishina@users.noreply.github.com> Date: Tue, 23 Apr 2019 14:55:45 +0400 Subject: [PATCH] js-9 done Nikishina --- index.js | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 7dca45f..b118238 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,6 @@ module.exports = { + + events: {}, /** * @param {String} event @@ -6,7 +8,13 @@ module.exports = { * @param {Function} handler */ on: function (event, subscriber, handler) { - + if(!this.events.hasOwnProperty(event)) { + this.events[event] = []; + } + + this.events[event].push([subscriber, handler.bind(subscriber)]); + + return this; }, /** @@ -14,6 +22,14 @@ module.exports = { * @param {Object} subscriber */ off: function (event, subscriber) { + + for (var i = this.events[event].length - 1; i > 0; i--) { + if (this.events[event][i][0] === subscriber) { + this.events[event].splice(i, 1); + } + } + + return this; }, @@ -21,6 +37,13 @@ module.exports = { * @param {String} event */ emit: function (event) { + if (this.events[event].length > 0){ + for (var i = 0; i < this.events[event].length; i++){ + var funcHandler = this.events[event][i][1]; + funcHandler(); + } + } + return this; } };