- From: Maciej Stachowiak <mjs@apple.com>
- Date: Wed, 22 Mar 2006 11:16:37 -0800
- To: Jim Ley <jim@jibbering.com>
- Cc: "Web APIs WG (public)" <public-webapi@w3.org>
On Mar 22, 2006, at 5:43 AM, Jim Ley wrote:
>
> "Anne van Kesteren" <annevk@opera.com>
>> On Sat, 25 Feb 2006 19:19:16 +0100, Daniel Schierbeck
>> <daniel.schierbeck@gmail.com> wrote:
>>> This seems like a really good idea. I'm not sure about the method
>>> name.
>>
>> There is now:
>>
>> .match()
>> .matchAll()
>>
>> ... per some discussion on #webapi. Thanks for your feedback.
>
> as per later discussion on #webapi, please change these
> names, .match is too similar to match in ES, and I would expect it
> to take a regular expression (perfectly reasonable to run a regular
> expression over a DOM).
1) I think it's really useful to have these names be short. The fact
that one of the most common operations you do by the dom is called
document.getElementById is a huge disaster. We can afford some
imprecision in the name in exchange for brevity if this is to be a
common idiom.
2) I don't think trying to match a regular expression against the DOM
is very sensible. But if you did want to do it, you could convert the
DOM to a string. It's not unprecedented for operations with the same
name to do different things based on the type. Consider the
difference between 2 + 2 and "a" + "a" in ECMAScript. Or consider
Array.indexOf vs. String.indexOf. Therefore I am not convinced by
your argument that this similarity is problematic.
> Also it's very odd to have .match() return only the first of
> something, it should return all of them, like everywhere else the
> name is used to avoid confusion (I'm not sure of the use case of
> just matching one anyway, please provide - if it's scripting
> performance, let's have a limit on the general case, because I
> often only what the first 4 things as much as only 1, gEBI covers
> the 1 case...)
Use case for matching one is to be able to easily operate on the
first item when you know you have a unique match:
document.match("#header").addEventListener("click", headerClick, false);
Also, it is likely this can be done more efficiently than computing
the whole static list and then getting the first item. I am sure
there are other cases where a unique match is expected, such as
looking for a specific attribute value:
document.match("iframe[name='ad-banner']").addEventListener("click",
bannerClick, false);
I don't think the case of "first n for some arbitrary value of n" is
common enough to be worth adding API for.
> Mainly these names say nothing about their inescapable link to
> Selectors, they should.
Unfortunately the name document.selectNodes is taken by XPath, and
select() would be easily confused with document.selection.
Regards,
Maciej
Received on Wednesday, 22 March 2006 19:16:50 UTC