【问题标题】:window.hasOwnProperty('innerHeight') returns false in Firefoxwindow.hasOwnProperty('innerHeight') 在 Firefox 中返回 false
【发布时间】:2014-07-25 19:31:51
【问题描述】:

在 Firefox 上运行的单元测试中,我遇到了一个奇怪的问题,即在窗口对象上删除 innerHeight 属性。

window.hasOwnProperty('innerHeight') 返回 false(仅在 firefox 中),这是根据 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty MDN [docs] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty) 所预期的。但是,innerHeight 属性定义在什么对象上?

窗口上的属性失败(因为没有原型)?

window.prototype.hasOwnProperty('innerHeight');

我想知道的主要原因是在使用 sinon 的测试期间将属性存根,该属性在 chrome 中工作但在 firefox 中失败,因为 firefox 报告此属性不属于窗口对象。那么它属于什么对象呢?

【问题讨论】:

  • 'innerHeight' in window 在 IE8 及以下版本中返回 true,并且是检查该属性的正确方法。
  • 我想是Window.prototype
  • @bfavaretto 是的,就是这样,谢谢 - 把它作为答案,我会接受

标签: javascript firefox sinon


【解决方案1】:

prototype 属性属于 Window 构造函数。但我会按照adeneo 的建议使用'innerHeight' in window,因为这会检查window 对象及其原型链。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 2011-12-19
    • 1970-01-01
    相关资源
    最近更新 更多