I'm a bit confused as to how the copying of objects work. I have
embedded a native object and that all works fine so I can do:
var v = new NativeObj();
but then if I do:
var v2 = v;
I'm not getting my native constructor called that I defined in my
jsclass structure? I want to catch the copy as I need to do 'special
native' things if the object is copied.
I'm sure I'm missing something simple!
You seem to be assuming that 'var v2' is akin to saying, in C++,
'NativeObj v2', and that the C++ counterpart-class NativeObj has a
copy-constructor.
JS is not C++. There is on deep or shallow copy on assignment. Object
is a reference type, so v2 = v just copies the reference in v into v2,
making both variables denote the same object.
If you want to copy an object, you'll need to define a copy or clone
method on it that does the right thing. "The right thing" may mean
something quite different depending on use-cases, so beware of bogus
generality.
Probably if you're embedding JS without knowing its rules, you should
get a book, and perhaps dive into the ECMA spec. The Flanagan O'Reilly
book, and Danny Goodman's JavaScript bible, or good books. The ECMA-262
Edition 3 spec is at http://www.mozilla.org/js/language/E262-3.pdf.
/be