我在理解IE8中typeof的机制时遇到问题。
我在“parent.html”中有以下 JavaScript 代码:
var myNewWindow = window.open('child.html');
myNewWindow.sayhi = function() {
alert('Hi!');
}
在 parent.html 中,我们打开一个 JavaScript 控制台 (F12)。我们测试了类型,看起来是正确的。
typeof myNewWindow.sayhi "function"
但是如果我打开一个控制台并在子窗口中做一些测试,结果会有点奇怪。
typeof this.sayhi "object"
问题是可以调用“对象”。this.sayhi()显示警报。
甚至 underscoreJS 也会感到困惑
_.isFunction(this.sayhi) false
有人可以解释为什么在窗口(this)中存在但在外部窗口中声明的函数不被IE8识别为函数而是作为对象?
顺便说一句,有人说我应该看看答案: typeof window.close is different for IE
你猜怎么着?它仍然说这个东西是一个对象:
Object.prototype.toString.call(this.sayhi) '[object Object]'