Object.prototype.forEach
大昔の「prototype.js の Object 汚染」を思い出した。
後に追記されたようだが、 Array.forEach に倣ってきちんと書くとこうなる。
(function(global) { Object.prototype.forEach = function(callback, context) { context = context == undefined ? global : context; for (var key in this) if (this.hasOwnProperty(key)) callback.call(context, this[key], key, this); }; })(this);
ちなみに context == undefined
は context === undefined || context === null
と等価。
Object を連想配列として使うときはここで定義した forEach を使えばいいわけで、 Object.prototype を拡張しても問題ないだろう、と思って某ライブラリを見たらそこら中で for in を使っていた。Object.prototype 汚染プルーフなライブラリを広めれば Object を拡張でき開発効率が上がるだろうし、その方向に持っていきたい。