首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Google V8编程详解(4)Context

2012-12-15 
Google V8编程详解(四)Context上一章,比较略提了下V8的Context。本章将详细的讲解下Context的概念以及用法。

Google V8编程详解(四)Context

上一章,比较略提了下V8的Context。本章将详细的讲解下Context的概念以及用法。

Context

Context是V8中一个非常重要的类,理解起来就一句话:JavaScript的执行环境。Context中包了JavaScript内建函数、对象等。所以,通过Context::New出来的Context都是一个全新的干净的JavaScript执行环境,切其他JavaScript环境的更改不影响New出来的Context的JavaScript执行环境,例如:修改JavaScript global函数。

注:使用了附录函数

Demo代码如下:



打印结果分别为:

1

5

可以看出,contextAFunc和contextBFunc分别位于不同的Context,在contextAFunc中对全局函数做了更改,所以第一次打印无论如何都是1,而contextBFunc中,New了一个contextB,整个js执行在contextB中,拥有一个全新的干净的JavaScript执行环境,所以,打印是5。


V8编程中,需要在不同的Context中进行切换,需要创建各种Context。这样会不会影响执行效率呢?V8已经考虑到这一点了,V8在除了创建第一个Context的时候,消耗的时间较长外,创建其他的Context的时候,开销非常小,V8对Context需要创建的一些JavaScript的内建对象即可。


Context常用函数讲解:

  void Enter();  void Exit();

用于不同的Context之间切换。


版权申明:
转载文章请注明原文出处,任何用于商业目的,请联系本人:hyman_tan@126.com



2楼fkeujjpdc昨天 00:01
楼主能不能在后面加一个context共享的例子,你用纯语言描述不太好理解,比如contexA中导入了一些函数如果再创建contexB怎么让contexB中具有contextA中函数。n 我最近碰到了两个问题:n1.javascript中的有些函数好像不能被V8识别,比如setTimeOut调用的时候显示该函数没有定义。n2.contexA中的变量能和contexB中共享吗
1楼downmooner3天前 10:30
哈。赶紧更新。什么时候出js调用c++呢。还有windows下有用吗。怎么用呢

热点排行