javascript에서 C++의 스택 기반 또는 로컬 오브젝트에서 소멸자와 같은 구조를 찾고 있습니다.C++에서 stackbased 오브젝트와 비슷한 것입니다.
#include <stdio.h>
class M {
public:
int cnt;
M() {cnt=0;}
void inc() {cnt++;}
~M() {printf ("Count is %d\n", cnt);}
};
...
{M m;
...
m.inc();
...
m.inc();
} // here the destructor of m will printf "Count is 2");
은 그래서 이것은 내가 그 범위가 종료 될 때 (이것은 "범위를 벗어나"경우) 작업을 수행하는 구조를 찾고 있어요 의미한다. C++의 소멸자 (mutex-alloc 및 release 래핑에 사용)와 같이 범위 끝에서 특별한 조치가 필요하지 않은 방식으로 강력해야합니다.
건배, 범위의 코드가 동기로 보장되어있는 경우, 나중에 소멸자를 호출하는 함수를 만들 수 있습니다
흠. 복잡하지만 작동합니다. "var enteringcope"는 M에 고유하므로 다음과 같이 바뀔 수 있습니다. M.scoped = function (func) { var m = new M; func (m); m.destruct(); }; 다음으로 사용하면 M.scoped (function (m) { m.inc(); m.inc(); }); – MGrant
죄송합니다. 작성해야합니다 : var enteredcope-definition은 M에 특정한 것일 수 있습니다 ... – MGrant
'item.destruct()'는 'finally'블록으로 묶어야합니다 : 'try {func (item); } finally {item.destruct(); }' – user