javascript - jQuery 的 .isWindow 方法?

标签 javascript jquery

我试图从 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/

相关文章:

javascript - 如何使用 JQuery 或 JavaScript 打开没有 id 或类的 Bootstrap 模式对话框?

javascript - 使用 JavaScript 正则表达式获取 MVC 样式路由数据(URL 最后一个词)

javascript - 想从我点击它的按钮中获取以前的输入

javascript - HTML 按钮不起作用

javascript - 我怎样才能让这个js应用程序使用一个 "on click event"而不是四个来运行?

javascript - 在 IE 上使用 "Access Data Sources Accross Domains"下载 Google Drive 驱动器文件

javascript - 如果超出 div,JS 显示/隐藏/关闭

javascript - 如果单击可折叠元素,则折叠所有其他(可折叠)已打开的元素 - Bootstrap

javascript - 使用jQuery或JavaScript在下一页打开相同的div以记住

javascript - 照片库 css 选定状态未被 cookie 读取