- From: Ian Hickson <ian@hixie.ch>
- Date: Tue, 28 Jun 2011 22:23:09 +0000 (UTC)
- To: Cameron McCormack <cam@mcc.id.au>
- cc: public-script-coord@w3.org
On Mon, 27 Jun 2011, Cameron McCormack wrote:
>
> In Web IDL currently, if you write [Callback] on an interface and the
> interface consists of a single operation, then script can implement that
> interface either by using a Function object, or by providing an object
> with a property whose name is the identifier of the operation.
I've always assumed that the latter was a side-effect of non-JS languages
needing something more complicated here than just a function reference: if
the old DOM specs had never targetted anything but JS, would we support
the non-function case? Consider setTimeout(), which only takes a function
(or a string, for legacy reaons).
> Olli gave a good example of why you might want to allow objects-with-a-
> property to be used as callback objects, which is so that you can
> encapsulate some state in that object.
>
> var handler = {
> _highlighted: false,
> handleEvent: function(evt) {
> this._highlighted = !this._highlighted;
> evt.target.style.color = this._highlighted ? "red" : "black";
> }
> };
> e.addEventListener("click", handler, false);
(function () {
var highlighted = false;
e.addEventListener("click", function (event) {
highlighted = !highlighted;
event.target.style.color = highlighted ? "red" : "black";
}, false);
})();
--
Ian Hickson U+1047E )\._.,--....,'``. fL
http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,.
Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Tuesday, 28 June 2011 22:23:45 UTC