I actually agree on this, but Set.has() is misleading then, imho. Shouldn't be specified that `has()` is key related and `contains()` is value related? Also a "magic" Object.has(obj, key) with smart obj recognition and Object.contains(obj, value) would be probably cool
On Fri, Nov 2, 2012 at 2:30 PM, Allen Wirfs-Brock <[email protected]>wrote: > > On Nov 2, 2012, at 10:56 AM, Jason Orendorff wrote: > > On Fri, Nov 2, 2012 at 12:29 PM, Domenic Denicola < > [email protected]> wrote: > >> > If we call it "has", should we also rename String.prototype.contains? >> >> I'd say no; the distinction between collections "having" an element and >> strings "containing" a substring seems very sensible. It's a bit more >> awkward to say a string "has" a substring, and a string is definitely not a >> collection of substrings in any reasonable sense. >> > > Well, you could also note that array.has(x) looks for a particular value, > while map.has(x) looks for a particular key. > > But that's not the point. There's no common formal contract implemented by > all these methods; what they share is an informal "hey, look in this thing, > and tell me if you see that thing" vibe. > > > There is no verifiable formal contract. But there can be an informal > contract. In my experience, it is very important when using a dynamic > language to recognize and try to support such informal contracts. > > All the uses of "has" we have defined so far are about the "keys". Having > one place that is about the "values" to create unnecessary confusion > > Note that we (the JS/ES designers) already have a history of being being > inconsistent in our use of names. Consider String indexOf and Array > indexOf they are named the same and appear to have signatures. But they > logically are doing quite different things. String indexOf is looking for > the index of the first element of a subsequence of character elements that > matches a specific character sequence. Array indexOf is looking for the > index of a single element that contains a specific value. You might want > to implement a logically similar subsequence search for Array's but if you > do, you can't call it indexOf because that name was already used for > something with different semantics. We should try to do better as people > for our example. > > Allen > > > > > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss > >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

