2013-08-28 6 views
6

Amici,hasOwnProperty HTMLElement Firefox

Ho notato in Firefox v23.0.1 che, hasOwnProperty di HTMLElement (ingresso, button..etc) non funziona,

button1.hasOwnProperty('id') = false 

che uso per per controllare :

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

ma in chrome hasOwnProperty funziona bene.

sai che si tratta di un errore?

+0

test un po 'più ampiamente e troverete i browser in uso che non supportano * * hasOwnProperty su oggetti DOM, né realizzare qualsiasi tipo di eredità. – RobG

risposta

5

Per specifica, la proprietà "id" si trova su HTMLElement.prototype o Element.prototype (a seconda della versione della specifica).

Firefox ha ragione. Chrome invece mette tutte le proprietà direttamente sugli oggetti.


http://dev.w3.org/2006/webapi/WebIDL/#es-attributes http://dev.w3.org/2006/webapi/WebIDL/#ecmascript-binding

+0

Sei sicuro? Proprietà come id non hanno senso sul prototipo. Immagino che non siano enumerabili solo su Firefox (non sono sicuro se per le specifiche del DOM o meno). – bfavaretto

+1

Per quale specifica? È sempre bene dire quale, dal momento che le specifiche del DOM fino a poco tempo fa erano indipendenti dal linguaggio. E dovresti sempre fare il backup di tali dichiarazioni con riferimenti appropriati. – RobG

+0

Sono d'accordo con @Bergi. Non e possibile. Se 'id' si trovasse nel' prototipo', sarebbe condiviso tra tutte le istanze, il che non ha alcun senso. – plalx