[英]IE9: hasOwnProperty trick does not work?
有充分證據表明,IE中的原生DOM元素不包含hasOwnProperty()方法。 這有幾個解決方案; 其中最優雅的是直接在Object.prototype中訪問hasOwnProperty()方法,如下所示:
Object.prototype.hasOwnProperty.call(element, name);
在我看來,這不再適用於IE9。 誰能解釋一下? 這是一個說明這一點的小提琴 。
在兼容模式關閉的標准模式下使用IE9,警報顯示:
sessionStorage is supported: false
localStorage is supported: false
但是,在打開兼容性或Quirks模式后(或使用開發人員工具使用IE8和IE7引擎渲染頁面)后,警報會顯示:
sessionStorage is supported: true
localStorage is supported: true
這里有其他工作,或者hasOwnProperty的解決方法不再可用嗎?
這是因為這些屬性存儲在window
的原型鏈中,而不是直接存儲在對象上。
如果您使用in
,它會搜索原型鏈你,給你true
的IE9
。
var isSessionStorageSupported = "sessionStorage" in window; // true
var isLocalStorageSupported = "localStorage" in window; // true
所以.hasOwnProperty()
給出了正確的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.