2011-02-11 3 views
0

私がDiff.jsと呼んでいるプロジェクトを開始しました。違いを検出するためにいくつかの機能があります。関数の1つはdetectNew(original_state、current_state)です。保存した状態に後で変更を加えることなく、ウィンドウの状態を保存したい

current_stateで、original_stateにないプロパティを検出します。私は何をしたいウィンドウオブジェクトに新しいプロパティを検出しているが、私がやっていることは次のとおりです。

var _window = window; 
// ~Script that changes window~ 
detectNew(_window, window); 

しかし、ウィンドウと一緒に_window変数の変更。 誰でもこの現象を防ぐ方法を知っていますか?

答えて

0
// Create a backup variable. 
var _window = {}; 

// Put all the properties in it. 
for (prop in window) 
    _window[prop] = window[prop]; 

私はこの小さなスニペットを使い終わった。

0

ウィンドウの状態をコピーする必要があります。あなたが好きなのjQueryを使用することができ

var _window = {}; 
jQuery.extend(true, _window, window); 

// change window 

detectNew(_window, window) 

だけの提案...私はこれを試していません。

+0

唯一の問題は、ウィンドウ〜を変更するスクリプトが実際にはjQueryであることです。 xD – Kayla

0

ウィンドウにはたくさんのものがあります!

割り当ては参照によるものなので、割り当てだけでなくオブジェクトの詳細コピーを行う必要があります。しかし、ウィンドウをコピーすることは容易ではありません。私は巧みで、最新のブラウザの組み込みJSONサポートを使用したいと考えていました。しかし、循環参照のために動作しません。私はあなたがウィンドウのいくつかのサブオブジェクトへの関心の範囲を制限することをお勧めしたいと思います。ウィンドウには組み込みのものが多すぎるため、おそらく常に変化しています。

+0

私はそれについて考えましたが、_window変数に関数を含めたいと思っています。私の経験から見るとJSONは関数をサポートしていません。しかし、アイデアをありがとう。 – Kayla

関連する問題