Skip to content

Instantly share code, notes, and snippets.

Created March 27, 2016 11:27
Show Gist options
  • Save anonymous/1d954e0d049f400f49b9 to your computer and use it in GitHub Desktop.
Save anonymous/1d954e0d049f400f49b9 to your computer and use it in GitHub Desktop.
JS Bin // source https://jsbin.com/xeyona
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<script id="jsbin-javascript">
function isArray(e){
return Object.prototype.toString.call(e) === "[object Array]";
}
function Evt(){
this.events = {};
}
Evt.prototype.subscribe = function(name, fct){
if(typeof name !== "string" || name === ""){
throw new Error("typeof name is invalid");
}
if(typeof fct !== "function"){
throw new Error("typeof fct is invalid");
}
if(typeof this.events[name] === 'undefined'){
this.events[name] = [];
}
this.events[name].push(fct);
};
Evt.prototype.trigger = function(name, args, scope){
args = args || null;
scope = scope || window;
var self = this;
if(typeof name !== "string"){
throw new Error("typeof name should be a string");
}
var indexEvt = Object.keys(self.events).indexOf(name);
if(indexEvt === -1){
throw new Error('The event'+name+' is undefined');
}
this.events[name].forEach(function(e){
e.call(scope, args);
});
};
var evt = new Evt();
evt.subscribe('test', function(e){
console.log('Hello'+ e);
});
evt.trigger('test', "trololo");
var Network = new Evt();
Network.subscribe('receiveUsers', function(e){
console.log(e);
});
var xhr = new XMLHttpRequest();
xhr.open('GET', "http://jsonplaceholder.typicode.com/users", true);
xhr.onreadystatechange = function(e){
if(xhr.readyState == 4){
Network.trigger('receiveUsers', JSON.parse(xhr.response));
}
};
xhr.send(null);
</script>
<script id="jsbin-source-javascript" type="text/javascript">function isArray(e){
return Object.prototype.toString.call(e) === "[object Array]";
}
function Evt(){
this.events = {};
}
Evt.prototype.subscribe = function(name, fct){
if(typeof name !== "string" || name === ""){
throw new Error("typeof name is invalid");
}
if(typeof fct !== "function"){
throw new Error("typeof fct is invalid");
}
if(typeof this.events[name] === 'undefined'){
this.events[name] = [];
}
this.events[name].push(fct);
};
Evt.prototype.trigger = function(name, args, scope){
args = args || null;
scope = scope || window;
var self = this;
if(typeof name !== "string"){
throw new Error("typeof name should be a string");
}
var indexEvt = Object.keys(self.events).indexOf(name);
if(indexEvt === -1){
throw new Error('The event'+name+' is undefined');
}
this.events[name].forEach(function(e){
e.call(scope, args);
});
};
var evt = new Evt();
evt.subscribe('test', function(e){
console.log('Hello'+ e);
});
evt.trigger('test', "trololo");
var Network = new Evt();
Network.subscribe('receiveUsers', function(e){
console.log(e);
});
var xhr = new XMLHttpRequest();
xhr.open('GET', "http://jsonplaceholder.typicode.com/users", true);
xhr.onreadystatechange = function(e){
if(xhr.readyState == 4){
Network.trigger('receiveUsers', JSON.parse(xhr.response));
}
};
xhr.send(null);
</script></body>
</html>
function isArray(e){
return Object.prototype.toString.call(e) === "[object Array]";
}
function Evt(){
this.events = {};
}
Evt.prototype.subscribe = function(name, fct){
if(typeof name !== "string" || name === ""){
throw new Error("typeof name is invalid");
}
if(typeof fct !== "function"){
throw new Error("typeof fct is invalid");
}
if(typeof this.events[name] === 'undefined'){
this.events[name] = [];
}
this.events[name].push(fct);
};
Evt.prototype.trigger = function(name, args, scope){
args = args || null;
scope = scope || window;
var self = this;
if(typeof name !== "string"){
throw new Error("typeof name should be a string");
}
var indexEvt = Object.keys(self.events).indexOf(name);
if(indexEvt === -1){
throw new Error('The event'+name+' is undefined');
}
this.events[name].forEach(function(e){
e.call(scope, args);
});
};
var evt = new Evt();
evt.subscribe('test', function(e){
console.log('Hello'+ e);
});
evt.trigger('test', "trololo");
var Network = new Evt();
Network.subscribe('receiveUsers', function(e){
console.log(e);
});
var xhr = new XMLHttpRequest();
xhr.open('GET', "http://jsonplaceholder.typicode.com/users", true);
xhr.onreadystatechange = function(e){
if(xhr.readyState == 4){
Network.trigger('receiveUsers', JSON.parse(xhr.response));
}
};
xhr.send(null);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment