case constructor default eval instanceof navigator new prototype stopPropagation switch this typeof void with
I have used
prototype many times but use them less as time goes by and think eliminating them might be beneficial.
new isn't completely avoidable to instantiate certain host objects. Eliminating
switch statements are almost always a sign that objects should have some function-valued properties to implement polymorphism.
There are a few great uses of
eval in library-level code but each use should be considered very carefully for performance trade-offs.
I'm not keen on
navigator makes my skin crawl. Using
navigator is like relying on types in a typed language where the type system is so broken that the types are about equally likely to be lies as truth.
constructor is another broken attempt at a type system.
I've never used
with. It has too many tricky subtleties and doesn't make for readable and maintainable code.
void never even crosses my mind.
stopPropagation breaks the ability of listeners related to some other task to do their work. Any one particular handler should not have this much control.
I don't consider any of these words completely off limits. If a situation arises where a word really is the best or only way to accomplish a task then I'll use it. These words are my warning list that the train may be going off the tracks.
Update I've written a follow-up article about programming without
Have something to write? Comment on this article.