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
window(this) に存在するが外部ウィンドウで宣言された関数が関数として認識されず、IE8 によってオブジェクトとして認識される理由を誰かが説明できますか?
ところで、答えを調べる必要があると言う人もいます: typeof window.close は IE では異なります
何だと思う?それはまだこれがオブジェクトであると言います:
Object.prototype.toString.call(this.sayhi) '[object Object]'