我有一个变量 obj
obj 可以是任何东西,我想检测 obj 是否是一个函数。通常我会做
typeof obj === 'function'
当 obj 是本机函数时,问题出在 IE <= 8 中(至少知道它发生在 window.open 和 window.alert 中)。当对象为 window.open === 'object' 时,在 IE typeof obj 中
有没有一种可靠的方法来检查 window.open 是否真的是一个函数?
我看到 jQuery 在这方面也失败了
$.isFunction(window.open) => false //in IE
这显然在 jquery 1.3 或其他版本中被删除,不知道在此之前他们是如何测试它的。
补充: 一种方法似乎是打电话
Function.prototype.apply.apply(window.open)
如果这不会引发错误,则 window open 是一个函数。如果你这样做
Function.prototype.apply.apply({})
然后 IE 抛出错误“预期功能”。但是打开一个窗口来检查一个变量是否是一个函数并不是一个好的解决方案。