我正在尝试检查jQuery是否有对窗口对象的.hashchange方法引用,如
$(window).data('events').hasOwnProperty('hashchange') ?
$(window).hashchange(hashChange) :
window.onhashchange = hashChange;
但是我继续在两个支持&的浏览器中得到“未捕获的TypeError:无法调用方法'hasOwnProperty'的未定义”不支持该功能。任何想法?
答案 0 :(得分:4)
一种方法是查看属性是否只是未定义
if ($(window).hashchange === undefined) {
// Not defined
}
注意:这实际上会检查该值是否与名称相对应。可以使用显式undefined
值定义值,但这两个值可能与您的方案相同
var x = {}
x.test = undefined;
x.hasOwnProperty("test") // true
x.test === undefined // true
答案 1 :(得分:0)
$(window).data('events') === undefined
因此它具有无属性。
您需要做的是确保数据包含对象:
var window_data = $(window).data('events');
if(window_data !== undefined){
window_data.hasOwnProperty('hashchange') ?
$(window).hashchange(hashChange) :
window.onhashchange = hashChange;
}
else {
window.onhashchange = hashChange;
}