के लिए C++ में stackbased ऑब्जेक्ट्स की तरह कुछ जावास्क्रिप्ट में एक निर्माण की तलाश है जो 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");
तो यह मैं एक निर्माण जो एक कार्रवाई जब इसके दायरे समाप्त हो रहा है करता है (जब यह "दायरे से बाहर चला जाता है") रहा हूँ मतलब है। यह इस तरह से मजबूत होना चाहिए कि इसे दायरे के अंत में विशेष कार्रवाई की आवश्यकता नहीं है, जैसे सी ++ में उस विनाशक (म्यूटेक्स-आवंटन और रिहाई को लपेटने के लिए उपयोग किया जाता है)।
चीयर्स, mg
हम्म। जटिल, लेकिन काम करता है। चूंकि "var enterscope" एम के लिए विशिष्ट है, तो इसे तब बदला जा सकता है: एम.scoped = function (func) { var m = new m; func (m); m.destruct(); }; और उसके बाद इसका उपयोग होगा: एम.scoped (फ़ंक्शन (एम) { m.inc(); m.inc(); }); – MGrant
क्षमा करें, लिखा होगा: var enterscope-definition को एम के लिए विशिष्ट बनाया जा सकता है ... – MGrant
'item.destruct()' को 'अंत में' ब्लॉक में लपेटा जाना चाहिए: 'कोशिश {func (item); } अंत में {item.destruct(); } ' – user