26

Questo sembra abbastanza bizzarro.non ha il metodo hasOwnProperty (vale a dire non è definito) - IE8

Ecco il mio esperimento nella console IE8:

typeof obj1 // "object" 
obj1.hasOwnProperty // {...} 

typeof obj2 // "object" 
obj2.hasOwnProperty // undefined 

Tutte le idee su che cosa potrebbe causare questo?

+0

è obj2 un oggetto host? Sei in modalità IE7/IE8/Quirks? – Raynos

+1

riguardo alla differenza tra oggetti nativi e oggetti host? ': Http://stackoverflow.com/questions/7614317/what-is-the-difference-between-native-objects-and-host-objects –

+0

http: // correlato stackoverflow.com/questions/135448/how-do-i-check-to-see-if-an-object-has-a-property-in-javascript –

risposta

35

Questo esempio è da IE8, ma lo stesso risultato è da IE6 + e dalla maggior parte dei browser IE.

IE prima di # 9 non definisce per ospite oggetti

var o=window;// or document or document elements 
o.hasOwnProperty 

/* returned value: (undefined) 
undefined 
*/ 
+0

Grazie per la risposta. Sai di una soluzione alternativa? – Phil

+38

Forse 'Object.prototype.hasOwnProperty.call (finestra, nome)'? – panzi

+2

@panzi: Grazie mille! Funziona in IE8 e ora i browser incompatibili vengono rilevati correttamente nel mio sito. (prima, si bloccherebbe sulla pagina vuota, dal momento che nessun window.hasOwnProperty) – Andrea