26

Wydaje się to dość dziwne.obiekt nie ma metody hasOwnProperty (tzn. Jest niezdefiniowany) - IE8

Oto mój eksperyment w konsoli IE8:

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

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

Jakieś pomysły co do tego, co może być spowodowane?

+0

jest obj2 obiekt hosta? Czy jesteś w trybie IE7/IE8/quirks? – Raynos

+1

dotyczące "różnicy między obiektami natywnymi a obiektami hosta?': Http://stackoverflow.com/questions/7614317/what-is-t--difference-between-native-objects-and-host-objects –

+0

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

Odpowiedz

35

Ten przykład pochodzi z IE8, ale ten sam zwrot pochodzi z IE6 + i większości innych przeglądarek IE.

przed IE 9 nie definiuje go przyjmującym obiekty

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

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

Dzięki za odpowiedź. Czy znasz sposób obejścia tego problemu? – Phil

+38

Może 'Object.prototype.hasOwnProperty.call (window, name)'? – panzi

+2

@panzi: Dziękuję bardzo! Działa to w IE8, a teraz niekompatybilne przeglądarki są poprawnie wykrywane na mojej stronie. (wcześniej, powodowałoby awarię na pustej stronie, ponieważ nie ma window.hasOwnProperty) – Andrea

Powiązane problemy