예:
다음과 같은 코드가 있습니다.
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
이번에는 프로토타입의 속성을 출력합니다.
많은 경우 프로토타입의 속성을 순회할 필요가 없습니다. 우리가 지금 사용하고 있는 객체는 다른 개발자가 프로토타입에 일부 속성을 추가했다고 보장할 수 없습니다. 이제 객체의 속성을 다음과 같이 필터링해 보겠습니다.
for(var i in array){
if(array.hasOwnProperty(i)) {
console.log(i ":" array[i]);
}
}
다시 생각해 보세요. 이제 무엇이 출력될까요? 물론 0:1 1:2 2:3 입니다.