2013-08-28 2 views
6

친구, 내가 확인하려면 사용 나는 파이어 폭스 v23.0.1는 HTMLElement의 hasOwnProperty (입력, button..etc) 작동하지 않습니다에 주목hasOwnProperty는 HTMLElement 파이어 폭스

,

button1.hasOwnProperty('id') = false 

:

var str1 = ''; 
     for (pp in button1) { 
      if (button1.hasOwnProperty(pp)) { 
       str1 += (',' + pp); 
      } 
     } 
     alert(str1);//nothing here 

그러나 크롬 hasOwnProperty는 잘 작동합니다.

버그입니까?

+0


테스트 좀 더 광범위하고 DOM은 객체에 * * hasOwnProperty를 지원하지 않으며 상속의 어떤 종류를 구현합니까 사용중인 브라우저를 찾을 수 있습니다. – RobG

답변

5

사양에 따라 "id"속성은 HTMLElement.prototype 또는 Element.prototype (사양 버전에 따라 다름)에 있습니다.

Firefox가이 권리를 갖습니다. Chrome은 모든 속성을 개체에 직접 배치합니다. http://dev.w3.org/2006/webapi/WebIDL/#es-attributes http://dev.w3.org/2006/webapi/WebIDL/#ecmascript-binding

+0

정말입니까? id와 같은 속성은 프로토 타입에 아무런 의미가 없습니다. 나는 그들이 단지 파이어 폭스에 대해 열거 할 수 없다고 추측한다. (DOM 사양에 맞는지 아닌지는 확실하지 않다.) – bfavaretto

+1

사양은 무엇입니까? 최근까지 DOM 사양이 언어에 무관심했기 때문에 어느 것이 좋을까요. 그리고 적절한 참고 문헌을 사용하여 그러한 진술을 항상 백업해야합니다. – RobG

+0

@Bergi에 동의합니다. 그건 불가능하다. 만약'id'가'prototype'에 있다면 모든 인스턴스들 사이에서 공유 될 것이고 이것은 의미가 없습니다. – plalx