Hello guys. I need your help for solve this question.
I am want loading cfg.js in context.
In any action we will loading and working with scr_1.js. In scr_1 changing
vals from cfg.js. After will need working with scr_2 where have clear vars
from cfg.js, but they changed in prev work with scr_1.
How are correct work with context and copy they?
Thanks for your.
___ cfg.js ___
var a = { a : 22522, b : '123' };
// Define common functions ....
___ scr_1.js ___
function test_function(test_arg1,test_arg2)
{
log("Src 1");
log(a.a)
a.a = 9999;
log("Src 1 -> new a = " a.a)
return 0;
}
___ scr_2.js ___
function test_function(test_arg1,test_arg2)
{
log(a.a)
return 0;
}
___ main.cpp ___
int main(int argc, char* argv[])
{
v8::V8::InitializeICU();
Isolate* isolate = Isolate::GetCurrent();
HandleScope handle_scope(isolate);
Handle<ObjectTemplate> global_cfg = ObjectTemplate::New(isolate);
global_cfg->Set(String::NewFromUtf8(isolate, "log"),
FunctionTemplate::New(isolate, LogCallback));
Persistent<Context> persistent_context;
{
v8::Handle<v8::Context> context_global = Context::New(isolate,
NULL, global_cfg);
persistent_context.Reset(isolate, context_global);
v8::Local<v8::Context> context_tmp =
v8::Local<v8::Context>::New(isolate, persistent_context);
Context::Scope context_scope_tmp(context_tmp);
Handle<String> source2 = ReadFile(isolate, "cfg.js");
v8::Handle<v8::Script> script2 = Script::Compile(source2);
script2->Run();
}
// Run test 1. Need copy context with out change.
// After run test_function a = new value
{
HandleScope handle_scope(isolate);
v8::Local<v8::Context> context_tmp =
v8::Local<v8::Context>::New(isolate, persistent_context);
context_tmp->Enter();
Context::Scope context_scope_tmp(context_tmp);
HandleScope handle_scope(isolate);
Handle<String> source = ReadFile(isolate, "scr_1.js");
v8::Handle<v8::Script> script = Script::Compile(source);
// ! run function test_function
script->Run();
context_tmp->Exit();
}
// Run test 2. Need copy context without change.
{
HandleScope handle_scope(isolate);
v8::Local<v8::Context> context_tmp =
v8::Local<v8::Context>::New(isolate, persistent_context);
context_tmp->Enter();
Context::Scope context_scope_tmp(context_tmp);
HandleScope handle_scope(isolate);
Handle<String> source = ReadFile(isolate, "scr_1.js");
v8::Handle<v8::Script> script = Script::Compile(source);
// This val must equal var a = { a : 22522, b : '123' }, but test1
changes it.
script->Run();
context_tmp->Exit();
}
}
--
--
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
---
You received this message because you are subscribed to the Google Groups
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.