2011-02-11 7 views
0

방금 ​​Diff.js라고 부르는 프로젝트를 시작했습니다. 차이점을 탐지하기위한 몇 가지 기능이 있습니다. 함수 중 하나는 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 지원을 사용하고자했습니다.

var _window = JSON.parse(JSON.stringify(window)); 

그러나 순환 참조로 인해 작동하지 않습니다. 관심 영역을 창의 하위 오브젝트로 제한하는 것이 좋습니다. 창에는 너무 많은 기본 제공 항목이 있으며 항상 변경됩니다.

+0

그 일을 생각했지만 함수가 _window 변수에 포함되기를 원합니다. JSON은 함수를 지원하지 않습니다. 생각에 감사드립니다. – Kayla

관련 문제