JSFiddle - React, Tailwind, and code Playground
by kein1945
HTML
<input type="button" id="run" value="run">
JavaScript
document.getElementById('run').onclick = function(){
debuger;
var item_collector = function(){
var items = {}
var observers = []
this.addObserver = function('event',callback_func){
observers.push( callback_func )
}
this.fireEvent
this.addItem = function(tag, obj){
if(typeof items[tag] == 'undefined'){
items[tag] = []
}
items[tag].push(obj)
}
this.replaceItem = function(tag, obj){
items[tag] = []
this.addItem(tag, obj)
}
this.reduce = function(callback_func, sum){
sum = sum | 0
this.each(function(tag, obj){
sum += callback_func(tag, obj)
})
return sum
}
this.each = function(callback_func){
for(tag in items){
var tagged = items[tag]
for(var i = 0; i<tagged.length; i++){
callback_func(tag, tagged[i])
}
}
}
this.removeTag = function(tag){
delete items[tag]
}
}
var observable_items_collector = function(){
this.observers = new item_collector()
}
observable_items_collector.prototype = {
addItem: function(tag, obj){
this.proto.addItem(tag, obj)
this.fireEvent('addItem')
}
fireEvent: function(event){
this.observers.each(function(tag, obj){
if(tag == event){
obj(event)
}
})
}
removeTag: function(tag, obj){
this.proto.addItem(tag, obj)
this.fireEvent('removeTag')
}
}
var ii = new observable_items_collector()
ii.observers.addItem('addItem', function(){
console.log('ImetAdded')
})
ii.addItem('car', {label: 'Hey', price: 15000})
ii.addItem('mote', {label: 'Hey', price: 15000})
console.log(item_collector.reduce(function(tag, obj){ return obj.price}))
}