26

Esto parece bastante extraño.objeto no tiene método hasOwnProperty (es decir, no está definido) - IE8

Aquí está mi experimento en la consola IE8:

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

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

Alguna idea de lo que podría causar esto?

+0

es obj2 un objeto anfitrión? ¿Estás en el modo IE7/IE8/quirks? – Raynos

+1

con respecto a 'la diferencia entre objetos nativos y objetos host?': Http://stackoverflow.com/questions/7614317/what-is-the-difference-between-native-objects-and-host-objects –

+0

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

Respuesta

35

Este ejemplo es de IE8, pero el mismo retorno procede de IE6 + y de la mayoría de los demás navegadores IE.

EI antes # 9 no define por anfitrión objetos

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

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

Gracias por la respuesta. ¿Conoces alguna solución? – Phil

+38

Tal vez 'Object.prototype.hasOwnProperty.call (window, name)'? – panzi

+2

@panzi: ¡Muchas gracias! Esto funciona en IE8, y ahora los navegadores incompatibles se detectan correctamente en mi sitio. (antes, se colgaría en la página en blanco, ya que no window.hasOwnProperty) – Andrea