On Saturday, June 16, 2018 at 7:41:49 AM UTC-7, [email protected] wrote:
>
> I am looking for what an event is in terms of its implementation.I know
> what an event is in the abstract sense:
>
> https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events
>
> For instance, everyone knows what a 'list' is - a term that applies
> equally to 'shopping list' as well as 'collection of data'. However, I'm
> more interested in event *implementation*, e.g. how a programming
> language implements lists as *arrays *and* Objects*. I would like to know
> how events exist concurrently as code in the browser (written in in C++)
> and as data. (picked by an event handler).
>
> Thank you! The official docs are sparse on how events are implemented. So
> far, I know that they are 'objects' though it's not clear whether these are
> objects v.v. C++ or JavaScript.
>
any of the above.
Events are a map of some sort of identifier and a callback.
For my websocket interface, which is C/C++ the events are tracked in C/C++
structures.
For a graph database I was tinkering with in ES6, the events are tracked in
just javascript ojects.
A super simple way (and I'm sure there's lots of ways of doing this)
var myObjectWithEvents = { events : {},
on( event, callbackOrData ) {
if( typeof callbackOrData === "function" ) {
this.events[event] = callbackOrData; // register event handler
} else {
if( event in this.events ) {
this.events[event]( callbackOrData ); // invoke event
handler
}
}
}
};
myObjectWithEvents.on( "click", (data)=>{ console.log( "got click event..."
) } ); /// register an event handler to 'click'
....
myObjectWithEvents.on( "click", { x:1, y : 250 } ); // trigger an event...
Instead of assigning directly, each event in 'events' could be an array ...
[] and .push( callbackOrData ); would allow you to assign multiple
handlers to each eent instead of a single... and then you'd just do
something like this.events[event].forEach( cb=> cb( callbackOrData ) )
instead.
The above was something I got from Gun DB; if the argument passed to 'on'
is a function, keep that function as a callback stored as the name of the
event specified. If it's not a function, call any previously registered
event with the data passed to 'on', which then overloads 'on' as both the
uhh addEventListener() and the emit().
--
--
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
---
You received this message because you are subscribed to the Google Groups
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.