Google JavaScript Style Guide advises against extending the Array.prototype
.
However, I used Array.prototype.filter = Array.prototype.filter || function(...) {...}
as a way to have it (and similar methods) in browsers where they do not exist. MDN actually provides similar example.
I am aware about Object.prototype
issues, but Array
is not a hash table.
What issues may arise while extending Array.prototype
that made Google advise against it?
Most people missed the point on this one. Polyfilling or shimming standard functionality like Array.prototype.filter
so that it works in older browsers is a good idea in my opinion. Don't listen to the haters. Mozilla even shows you how to do this on the MDN. Usually the advice for not extending Array.prototype
or other native prototypes might come down to one of these:
for..in
might not work properlyHere are my responses:
for..in
on Array's usually. If you do you can use hasOwnProperty
to make sure it's legit.Array.prototype.filter
.Object.keys
to IE7. It seemed to stop working under certain circumstances. Your mileage may vary.Check out these references:
Good luck!