26

Điều này có vẻ khá lạ.không có phương thức hasOwnProperty (nghĩa là không xác định) - IE8

Dưới đây là thử nghiệm của tôi trong IE8 console:

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

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

Bất kỳ ý tưởng về những gì có thể gây ra điều này?

+0

là obj2 một đối tượng máy chủ? Bạn đang ở chế độ IE7/IE8/quirks? – Raynos

+1

về 'sự khác biệt giữa các đối tượng gốc và đối tượng lưu trữ?': Http://stackoverflow.com/questions/7614317/what-is-the-difference-between-native-objects-and-host-objects –

+0

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

Trả lời

35

Ví dụ này là từ IE8, nhưng lợi nhuận tương tự là từ IE6 + và hầu hết các trình duyệt IE khác.

IE trướC# 9 không định nghĩa nó cho chủ đối tượng

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

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

Cảm ơn câu trả lời. Bạn có biết cách giải quyết không? – Phil

+38

Có lẽ 'Object.prototype.hasOwnProperty.call (cửa sổ, tên)'? – panzi

+2

@panzi: Cảm ơn bạn rất nhiều! Điều này làm việc trong IE8, và bây giờ các trình duyệt không tương thích được phát hiện đúng cách trang web của tôi. (trước đây, sẽ sụp đổ trên trang trống, vì không có window.hasOwnProperty) – Andrea

Các vấn đề liên quan