yuiblog의 article에서 Douglas Crockford는 for in
문이 개체의 메서드를 반복합니다. 왜 다음 코드는 [ "a", "b", "c", "d", "toString"]을 생성하지 않습니까? .toString() 및 다른 메서드 멤버가 my_obj가 아닌 경우?JavaScript는 in 루프에 대해 메소드를 반복합니까?
Object.prototype.toString = function(){return 'abc'}
Object.prototype.d = 4;
my_obj = {
'a':1,
'b':2,
'c':3
}
a = []
for (var key in my_obj) {
a.push(key)
}
console.log(a) // prints ["a", "b", "c", "d"]
그래,'Object.prototype.toString.propertyIsEnumerable() == 당신이 링크 된 문서에서 FALSE ' – CMS
를 : "A 루프에서 반복하지 않습니다에 대한 ... 내장 속성이 있습니다. String의 indexOf 메서드 나 Object의 toString 메서드와 같은 모든 내장 메서드 개체를 포함하지만 루프는 모든 기본 제공 속성을 덮어 쓰는 모든 사용자 정의 속성을 반복합니다. " 내 .toString() 예제에서 "내장 된 속성을 덮어 쓰는 것을 포함하여"를 덮어 쓰지 않는다고 말하는 이유는 무엇입니까? – hekevintran
@hekevintran : 내 대답이 업데이트되었습니다. –