...found solution... :)
signalPropTempl->SetCallAsFunctionHandler(V8Obj::signalInvoke);
...
global->Set(v8::String::New("myObj"), myObj);
myObj->Set(v8::String::New("signal"), signalObj);
On May 31, 5:16 pm, vlad <[email protected]> wrote:
> Hi, could you please tell me what I'm doing wrong...
> I'm creating v8::Object like
> V8Obj* a = new V8Obj;
> v8::Handle<v8::FunctionTemplate> myObjTempl =
> v8::FunctionTemplate::New();
> myObjTempl->SetClassName(v8::String::New("myObj"));
> v8::Handle<v8::ObjectTemplate> myObjPropTempl =
> myObjTempl->InstanceTemplate();
>
> v8::Handle<v8::Function> myObjCtor = myObjTempl->GetFunction();
> v8::Handle<v8::Object> myObj = myObjCtor->NewInstance();
> myObj->SetInternalField(0,v8::External::New(&a));
>
> Now I want to have a "signal" property in myObj:
>
> v8::Handle<v8::FunctionTemplate> signalTempl =
> v8::FunctionTemplate::New(V8Obj::signalInvoke);
> v8::Handle<v8::ObjectTemplate> signalPropTempl =
> signalTempl->InstanceTemplate();
>
> signalPropTempl->SetAccessor(v8::String::New("length"),
> V8Obj::LenghtGetter);
> v8::Handle<v8::Function> signalCtor = signalTempl->GetFunction();
>
> signalCtor->SetName(v8::String::New("signal"));
> v8::Handle<v8::Object> signalObj = signalCtor->NewInstance();
>
> Now I publish myObj and set "signal" as function property of myobj
> global->Set(v8::String::New("myObj"), myObj);
> myObj->Set(v8::String::New("signal"), signalCtor);
>
> When running:
> V8RUN("myObj.signal();"); - OK, I get a callback
> V8RUN("myObj.signal.length"); - NOT OK - I dont get callback
> LenghtGetter()
>
> However when I do
> myObj->Set(v8::String::New("signal"), signalObj); - "length" accessor
> works ok, but I get
> <unknown>:6: Uncaught TypeError: Property 'signal' of
> object #<a myObj> is not a function
>
> How to make it to work as a function and to be able to set accessor
> for the property?
> Thanks
> Vlad
--
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users