我试图从 jQuery 的动画功能中了解我能做什么,但最终遇到了我不了解的各种内部功能,并最终落在了 isWindow 上。 isWindow 的代码检查对象是否具有属性 setInterval
,否则返回 false。
当然,任何对象都可以拥有属性 setInterval
而不是窗口,尽管几乎必须蓄意破坏 jQuery 的功能才能拥有具有该确切属性名称的对象,我可以想象一些可能是无意的合理情况。
有没有更好的方法来检查一个对象是否是一个窗口对象?他们不能使用类似于
obj.setInterval && obj.setInterval.toString() == 'function setIternval(){ [native code] }
我知道内部函数的 toString
的返回不会成为所有浏览器的标准,但 jQuery 的作者似乎对这些跨浏览器的差异有很好的理解。我也知道这也不是一个万无一失的方法,因为有人可以很容易地覆盖 toString
方法来返回相同的字符串,但这仍然可以防止对象被弄错的问题一个窗口。
我不会问我是否认为 isWindow
仅用于 jQuery 的内部对象,但它是 isPlainObject
的一部分,它在 中使用.extend
,可用于外部对象。
最佳答案
关于:
function isWindow(obj) {
var toString = Object.prototype.toString.call(obj);
return toString == '[object global]' || toString == '[object Window]' || toString == '[object DOMWindow]';
}
似乎适用于 Chrome、Firefox、Opera、IE 和 Safari(最新版本)
关于javascript - jQuery 的 .isWindow 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9576283/