

jQueryの内部で`new Date()`が「このオブジェクトではサポートされていない操作です」というエラーを吐いています。  
これを回避する方法が知りたいです。

再現条件が分からず、最小限の再現ソースを提示できないので、代わりに状況を説明させてください。  
なお、再現を確認した環境はIE11とEdgeです。Chromeでは発生していません。

次の画像は、IE11の開発者ツール（F12）です。  
見えているソースは、jQuery 1.11.3のものです。

[![jquery](https://i.stack.imgur.com/3kdnn.png)](https://i.stack.imgur.com/3kdnn.png)

次の画像は、上記のエラー発生時のコールスタックです。  
上から8つ目の`request.js`は、私が書いたコードです。  
jQueryの`ajax`メソッドを呼んでいます。

[![コールスタック](https://i.stack.imgur.com/pXx0G.png)](https://i.stack.imgur.com/pXx0G.png)

次の画像は、エラー発生時にデバッガが止まっている状況で、変数ウォッチからグローバル変数`Date`を確認したところです。  
なぜか`undefined`になっています。  
エラーの根本的な原因は分かりませんが、直接的な原因はこれのようです。

[![ウォッチ
Date](https://i.stack.imgur.com/hb64Y.png)](https://i.stack.imgur.com/hb64Y.png)

次の画像は、上記と同様に`jQuery`変数が存在しているかどうか確認したところです。  
`jQuery`は見つかりましたが、なぜか`$`が`undefined`です。

[![ウォッチ
jQuery](https://i.stack.imgur.com/M0HJX.png)](https://i.stack.imgur.com/M0HJX.png)

次の画像は、上記のウォッチで確認しているときにIEがクラッシュしたところです。  
ウォッチのリストに、`jQuery`をもう一度追加したところでクラッシュしました。  
何度か試しましたところ、クラッシュのタイミングは若干前後するものの、`jQuery`を2回以上ウォッチに追加することで再現します。

[![画像の説明をここに入力](https://i.stack.imgur.com/NnLyU.png)](https://i.stack.imgur.com/NnLyU.png)

**追記**

上記の問題のコードでは必ず発生します。

コールスタックの上から6番目、「非同期呼び出し」の次の行にあるsendの部分でブレークポイントを貼って止めてみると‌​、その時点ではDateが存在します。  
また、Dateがundefinedだったのと同様に、StringやNumberなどもundefinedになっていました。


CC BY-SA 3.0
2016-09-10T03:58:06.170
28797
2016-09-13T12:56:42.237
2016-09-13T12:56:42.237
8078
8078
question
javascript jquery internet-explorer
jQuery内部でnew Date()が「このオブジェクトではサポートされていない操作です」というエラーになる


デバッグ中にブラウザが落ちてしまうというのは大変ですね。  
例えば下記のように、`Date`(必要であれば`$`も)の変更を監視・拒否するように、プログラム冒頭のグローバル名前空間で仕込んでおくというのはどうでしょうか。

[code]

    // Date の変更を拒否する
    const orig_date = Date;
    Object.defineProperty(
        this, "Date", {
            set: function(v){
                console.log("!NOT ALLOWED: set Date:", v);
                console.trace();
            },
            get: function(){ return orig_date; },
        }
    );
    
[/code]


CC BY-SA 3.0
2016-09-10T09:30:47.240
28801
2016-09-10T09:30:47.240
3054
28797
answer