在 javascript 中寻找一个类似于基于堆栈的析构函数或 C++ 中的本地对象的构造函数,例如
#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++ 中的析构函数那样(用于包装互斥体分配和释放)。
干杯,毫克
如果保证作用域中的代码是同步的,您可以创建一个随后调用析构函数的函数。但它可能不像 C++ 那样灵活,语法也可能不像 C++ 那样简洁:
var M = function() {
console.log("created");
this.c = 0;
};
M.prototype.inc = function() {
console.log("inc");
this.c++;
};
M.prototype.destruct = function() {
console.log("destructed", this.c);
};
var enterScope = function(item, func) {
func(item);
item.destruct();
};
您可以按如下方式使用它:
enterScope(new M, function(m) {
m.inc();
m.inc();
});
这将被记录:
created
inc
inc
destructed 2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)