"use strict";
window.Reciever = function (userHandler, messageHandler) {
this.userHandler = userHandler;
this.messageHandler = messageHandler;
};
window.Reciever.prototype.handleMessage = function (message) {
console.log(this);
var data = JSON.parse(message.data);
switch (data.type) {
case 'user':
this.userHandler(arguments);
break;
case 'message':
this.messageHandler(arguments);
break;
default:
throw new Error('Type wasn\'t recognized');
}
};
Необходимо, чтобы этот прототип находился в глобальной области видимости (знаю, что плохо, но это временное решение).
Объекту при инициализации передаются 2 функции.
Вот пример использования:
"use strict";
var reciever = new window.parent.Reciever(Controller.user, Controller.message);
if (window.addEventListener) {
window.addEventListener("message", reciever.handleMessage);
} else {
// IE8
window.attachEvent("onmessage", reciever.handleMessage);
}