Mark Miller wrote:
Yes, this is indeed the only question that Andrea and I are raising in this thread. As you acknowledge, providing window here is a little strange. I quibble with "a little". When a surprise surprises by providing less authority than expected, I don't much care. When the surprise is that more authority is provided than expected, that's a more serious issue.

In 1995-96, this wasn't surprising. Frames and framesets were there, also window.open. Calling otherWindowOrFrame.setTimeout(func, delay, args) worked by passing otherWindowOrFrame bound to |this| when invoking func.

(Er, only in 1996 -- setTimeout originally took a string as first parameter and eval'ed it, no function variant.)

It is what it was :-P.

The surprise may be in thinking of sloppy-mode global functions as |this|-free procedures, when they were rather global object methods. Calling otherWindowOrFrame.func(args) bound |this| as you would expect, and calling func in the context of otherWindowOrFrame bound the same |this| value. Sloppy FTW :-P.

Agreed it is an implicit parameter capability leak. I'm just giving the view as it was in the past, which is enshrined not only in sloppy mode as you note, but in the spec for Window::setTimeout.

/be
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to