質問: function() {}; for(var key in hairetu) { console.log(hairetu[key]); } ``` 配列の値だけでなく、プロトタイプで拡張されたArrayオブジェクトのhogeメソッドまで表示されてしまいます。 なぜ、プロトタイプのhogeメソッドまで表示されてしまうのでしょう。
回答: > > 配列の値だけでなく、プロトタイプで拡張されたArrayオブジェクトのhogeメソッドまで表示されてしまいます。 > > > `for-in` は **[[Prototype]] 上の列挙可能(enumerable true)なプロパティ**も列挙する仕様だからです。 リファレンスを確認する事を強く推奨します。 * for...in - JavaScript | MDN 直属のプロパティを列挙したいのであれば、下記のいずれかを使用して下さい。 * `Array.prototype.forEach` * `Array.prototype.keys` * `for-of` 文 * `Object.keys` (ただし、列挙順はランダム) Re: aaaaaaaa さん