2013-08-28 23 views
6

Freunde,hasOwnProperty Htmlelement Firefox

ich in Firefox bemerken v23.0.1, dass, hasOwnProperty von Htmlelement (Eingang, button..etc) nicht funktioniert,

button1.hasOwnProperty('id') = false 

ich in verwenden, um zu überprüfen :

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

aber in Chrom hasOwnProperty funktioniert gut.

wissen Sie, ist es ein Fehler?

+0

-Test ein wenig breiter und Sie verwendeten Browser finden, * hasOwnProperty nicht unterstützen * auf DOM-Objekte, noch implementiere sie jede Art von Vererbung. – RobG

Antwort

5

Pro spec, die "id" Eigenschaft ist entweder HTMLElement.prototype oder Element.prototype (je nach Spezifikation Version).

Firefox bekommt dieses Recht. Chrome platziert stattdessen alle Eigenschaften direkt auf Objekte.


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

+0

Sind Sie sicher? Eigenschaften wie id machen auf dem Prototyp keinen Sinn. Ich nehme an, dass sie in Firefox einfach nicht aufzählbar sind (nicht sicher, ob per DOM-Spezifikation oder nicht). – bfavaretto

+1

Für welche Spezifikation? Es war immer gut zu sagen, welche, da DOM specs bis vor kurzem sprachunabhängig waren. Und Sie sollten solche Anweisungen immer mit entsprechenden Referenzen sichern. – RobG

+0

Ich stimme @Bergi zu. Das ist nicht möglich. Wenn die ID auf dem Prototyp wäre, würde sie zwischen allen Instanzen geteilt werden, was keinen Sinn ergibt. – plalx

Verwandte Themen