I can give an example, john resigs simple (and wildly popular) client side templating function.
<editorial>
the good parts is a phenomenal book that changes lives, but crockford is not infallable, and often will declare something that is really a matter of taste (like one line if statements) is bad with the same authority that he says genuinely horrible things are bad (like the whole implicit global/explicit local thing).
<editorial>
The issue with with
is addressed on the mdc page
function f(x, o) {
with (o)
print(x);
}
Basically, the value of x is ambiguous until run time. If o has a property called x, x will be that property. If not, x will be the thing passed in. That means developers reading the code may have a hard time figuring out what x means, and more importantly, the JS interpreter will not be able to apply certain kinds of optimizations it otherwise would be able to.
<opinion>
Now personally, I find with perfectly readable, and I would never ever name variables the way they are named in the above example, so I find the readability and ambiguity arguments hogwash. As for the perf argument, as long as we aren't talking about being silly (like having half your app inside a with block), is mostly an argument for premature optimization, where you are really talking about almost immeasurable amounts of wasted time in real world scenarios. I think it is a highly situational language feature that should only really ever be used when the alternative is either significantly more, or less readable code would be the alternative.
</opinion>