script.runInNewContext()方法首先将声明的contextObject上下文化,在创建的上下文中的vm.Script对象内部运行编译后的代码,然后返回输出。但是,正在运行的代码无法访问本地作用域。
用法:
script.runInNewContext( contextObject, options )
参数:该方法接受上述和以下所述的两个参数:
- contextObject:该对象将被上下文化,如果未定义,则将创建一个新对象,
- options:它是可选的,并返回Object。
它具有以下参数:
- displayErrors:它包含一个布尔值,即如果在编译代码时引发错误,并且由于该原因而引发错误的代码行链接到堆栈跟踪,则为true。默认情况下,其值为true。
- timeout:它包含一个整数值,该整数指定在结束执行之前执行指定代码所花费的毫秒数。但是,如果执行关闭,则会发生错误。并且此值必须绝对为正整数。
- breakOnSigint:它拥有一个布尔值。如果为true,则在提供SIGINT即(Ctrl + C)后将立即停止执行。并且如果执行停止,则会引发错误。默认情况下,其值为false。
- contextName:它包含一个字符串。它是新生成的上下文的可读名称。默认情况下是“ VM Context i”,其中,i是所生成的上下文的索引,该索引以数字形式递增。
- contextOrigin:它包含一个字符串。它是与最近生成的上下文等效的来源。此外,原点必须像URL一样形成。其默认值为“”。
- contextCodeGeneration:它是对象类型。
它具有以下参数:- strings:它包含一个布尔值,如果将其设置为false,则对函数构造函数或eval的任何调用都将引发错误,即EvalError。其默认值为true。
- wasm:它包含一个布尔值,如果将其设置为false,则任何尝试编译WebAssembly模块的尝试都将引发错误,即WebAssembly.CompileError。默认情况下,其值为true。
返回值:它返回脚本中执行的最后一条语句的结果。
以下示例说明了Node.js中script.runInNewContext()方法的使用:
范例1:
// Node.js program to demonstrate the
// script.runInNewContext() method
// Including util and vm module
const util = require('util');
const vm = require('vm');
// Constructing context
const context = { x:3, y:4 };
// Constructing a script
const script = new vm.Script('x *=11, y *=4;');
// Calling runInNewContext method
script.runInNewContext(context);
// Displays output
console.log("The output is:", context);
输出:
The output is: { x:33, y:16 }
范例2:
// Node.js program to demonstrate the
// script.runInNewContext() method
// Including util and vm module
const util = require('util');
const vm = require('vm');
// Creating contexts
cont = {
animal:'dog',
total_number:5
};
// Creating script with its parameters
var script = vm.createScript(
'total_number += 5; name = "Sheru"', 'file.vm');
// Calling runInNewContext method
script.runInNewContext(cont);
// Displays output
console.log(cont);
输出:
{ animal:'dog', total_number:10, name:'Sheru' }
参考: https://nodejs.org/api/vm.html#vm_script_runinnewcontext_contextobject_options
相关用法
- Node.js GM edge()用法及代码示例
- Node.js GM chop()用法及代码示例
- Node.js GM whitePoint()用法及代码示例
- Node.js GM channel()用法及代码示例
- Node.js GM blur()用法及代码示例
- Node.js GM implode()用法及代码示例
- Node.js GM whiteThreshold()用法及代码示例
- Node.js GM randomThreshold()用法及代码示例
- Node.js GM segment()用法及代码示例
- Node.js GM write()用法及代码示例
注:本文由纯净天空筛选整理自nidhi1352singh大神的英文原创作品 Node.js | script.runInNewContext() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。