2008-03-22
Scope and Context(2)
1、共享scopes
Javascript是一种委托的语言,不用于类继承的语言。
我们目的是提供一种在多个scope中共享一组只读的变量。为此我们设置一个对象的原型。
当访问javascript的对象的属性时,对象首先根据属性名搜索属性,如果没有找到,则对象原型找到了。继续处理,直到找到
对象原型,直到原型链结束了。
为了在多个scope中共享信息,我们首先创建希望共享的对象,
首先用initStandardObjects 来创建对象,然后创建一个新的对象,然后设置它为原型,并且设置它的父亲scope为空。
Scriptable newScope = cx.newObject(sharedScope);
newScope.setPrototype(sharedScope);
newScope.setParentScope(null);
现在就可以使用newScope来解析脚本了。让我们调用这个scope。任何顶层的脚本中定义的函数或变量,将会作为scope的属性终结。使用标准对象如Function,String或RegExp都可以在共享的scope中找到定义。多实例scopes也可以被定义,拥有他们自己的变量,使用共享scope。
多实例共享scope可以并发使用。
Javascript是一种委托的语言,不用于类继承的语言。
我们目的是提供一种在多个scope中共享一组只读的变量。为此我们设置一个对象的原型。
当访问javascript的对象的属性时,对象首先根据属性名搜索属性,如果没有找到,则对象原型找到了。继续处理,直到找到
对象原型,直到原型链结束了。
为了在多个scope中共享信息,我们首先创建希望共享的对象,
首先用initStandardObjects 来创建对象,然后创建一个新的对象,然后设置它为原型,并且设置它的父亲scope为空。
Scriptable newScope = cx.newObject(sharedScope);
newScope.setPrototype(sharedScope);
newScope.setParentScope(null);
现在就可以使用newScope来解析脚本了。让我们调用这个scope。任何顶层的脚本中定义的函数或变量,将会作为scope的属性终结。使用标准对象如Function,String或RegExp都可以在共享的scope中找到定义。多实例scopes也可以被定义,拥有他们自己的变量,使用共享scope。
多实例共享scope可以并发使用。


评论