例:
次のようなコードがあります:
var array = [];
array.push(1);
array.push(2);
array.push(3);
for( var i in array) {
console.log(i ":" array[i]);
}
このとき何が出力されるでしょうか?もちろん 0:1 1:2 2:3
ですが、for in の前に Array.prototype.say = "hello";
を追加すると、再度実行すると何が出力されるでしょうか。
0:1 1:2 2:3 Say:hello
ほら、この時点ではプロトタイプのプロパティが出力されます。
多くの場合、プロトタイプのプロパティをトラバースする必要はありません。もう 1 つの理由は次のとおりです。私たちが現在使用しているオブジェクト、他の開発者がそのプロトタイプに属性を追加しているかどうかは保証できません。そこで、今回は次のように hasOwnProperty メソッドを使用します。
for(var i in array){
if(array.hasOwnProperty(i)) {
console.log(i ":" array[i]);
}
}
もう一度考えてみて、今何が出力されるでしょうか?もちろん0:1 1:2 2:3です。