2013-06-21 3 views
1
var o = { a: 1 }; 
delete o.a; 

getter 및 setter 접근 자 설명자와 마찬가지로 속성을 삭제할 때 알림을 받고 싶습니다.속성이 삭제 된 시점을 알 수 있습니까?

가능합니까?

+0

나는 그것을 얻지 못한다. 그것은'delete o.a'가있는 코드에서 그 지점에서 삭제됩니다. 따라서 언제 어디에서 삭제할지 알 수 있습니다. – Amberlamps

+0

아니요. 자바 스크립트에는 이러한 메커니즘이 없습니다. – Zirak

+0

@Amberlamps 그렇게 간단하지 않습니다. 동일한 규칙을 사용하여'o.a = 1'과'o.a'가 실행될 때를 알았지 만 게터와 세터를 구성 할 수 있습니다. 나는'o.a'가 삭제 될 때 실행되는 getters와 setter와 비슷한 다른 함수를 갖고 싶습니다. –

답변

1

@MarkGraham 덕분에 javascript 하모니에 대한 Object.observe() 사양 제안 사양을 발견했습니다.

http://wiki.ecmascript.org/doku.php?id=harmony:observe

그러나 이것은 (빠른 검색 후) Node.js를 구현하지 않습니다.

나는 또한 작업을 가로 채기위한 더 강력한 방법 인 Proxies을 발견했습니다. 하모니에서 왔지만 node.js는 - harmony-proxies 플래그 또는 --harmony를 사용하여 모든 하모니 기능을 활성화 할 수 있습니다.

편집 : Node.js는 이전 버전의 하모니 프록시를 구현합니다. 최신 것 : direct proxies 및 제공하는 예제가 예상대로 작동하지 않습니다. google groups

+0

어쨌든 * 비동기 알림 *을 사용하여 Object.observe를 원한다고 생각하지 않습니다. 프락시는 갈 길입니다. – Bergi

0

js에는 이러한 기능을위한 내장 된 "알림"시스템이 없습니다. 하지만 (가장 단순한) 해결책은 속성을 삭제 한 후 관리 코드를 삭제하는 방법 (예 : 알림을 사용했을 때와 같은)을 호출하는 것입니다.

1

환경을 제어하고 최신 상태를 유지할 수 있다면. Object.observer에 대한이 기사는 도움이 될 것이다. 당신은 오래된 브라우저 음식을 장만하는 경우, 그때는 아마 스스로를 작성해야한다는 실패

http://updates.html5rocks.com/2012/11/Respond-to-change-with-Object-observe

. 항상 마음 속의 성능을 발휘하십시오. 새로운 브라우저는 'Worker threads'를 구현하며 아마도 Object.observe가 자원으로 제공 할 것입니다. 이전 버전의 브라우저는 단일 스레드에서 javascript를 실행하므로이 장점이 없습니다.

타이머를 사용해야하지만, "하나"가 아닌 다중 타이머가 필요합니다 ... John Resig (Mr jQuery)는 타이머에 대한 다양한 기사와 단일 스레드에서의 실행 방법을 다뤘습니다. 여기에 그들 중 하나입니다 :

http://ejohn.org/blog/how-javascript-timers-work/

참고. 나는 나 자신을 시도하지 않았으므로 그 수행이 용인 될지 모른다.

+0

그는 Node.js를 말했다! – Bergi

+0

사과드립니다. Node.js가 'Tags'메뉴를 통해 여기에 오지 않았기 때문에 제목에 언급되어 있다면 더 명확했을 것입니다. –

관련 문제