📜  Node.js vm.createContext() 方法

📅  最后修改于: 2022-05-13 01:56:55.830000             🧑  作者: Mango

Node.js vm.createContext() 方法

vm.createContext()方法用于创建可用于运行多个脚本的单个上下文。此外,如果指定的contextObject被忽略,则返回一个新的空上下文对象。但是,如果随后声明了 contextObject ,则此方法将准备好该对象,以便可以在调用vm.runInContext()script.runInContext()时使用它。其中contextObject将是此类脚本中的全局对象,可以保留其活动属性。在脚本之外,它由 vm 模块运行,甚至全局变量也保持不变。

句法:

vm.createContext( contextObject, options )

参数:此方法接受上面提到的两个参数,如下所述:

  • contextObject:它是被上下文化的对象。
  • options:它是可选的并返回Object

返回值:它返回上下文对象。

以下示例说明了 Node.js 中createContext() 方法的使用:

示例 1:

Javascript
// Node.js program to demonstrate the    
// vm.createContext([contextObject[, options]])
// method
  
// Including util and vm module
const util = require('util');
const vm = require('vm');
  
// Assigning value to the global variable
global.globalVar = 10;
  
// Defining Context object
const object = { globalVar: 4 };
  
// Contextifying stated object
// using createContext method
vm.createContext(object);
  
// Compiling code
vm.runInContext('globalVar /= 2;', object);
  
// Displays the context
console.log("Context: ", object);
  
// Displays value of global variable
console.log("Global Variable is ", global.globalVar);


Javascript
// Node.js program to demonstrate the    
// vm.createContext([contextObject[, options]])
// method
  
// Including util and vm module
const util = require('util');
const vm = require('vm');
  
// Assigning value to the global variable
global.globalVar = 5;
  
// Defining Context object
const object = { globalVar: 20 };
  
// Contextifying stated object
// using createContext method
vm.createContext(object);
  
// Compiling code
vm.runInContext('globalVar += 2;', object);
  
// Displays the context
console.log("Context: ", object);
  
// Displays value of global variable
console.log("Global Variable is ", global.globalVar);


输出:这里,上下文中的 globalVar 为 2,输出为 (4/2 = 2),但 globalVar 的值仍为 10。

Context:  { globalVar: 2 }
Global Variable is  10

示例 2:

Javascript

// Node.js program to demonstrate the    
// vm.createContext([contextObject[, options]])
// method
  
// Including util and vm module
const util = require('util');
const vm = require('vm');
  
// Assigning value to the global variable
global.globalVar = 5;
  
// Defining Context object
const object = { globalVar: 20 };
  
// Contextifying stated object
// using createContext method
vm.createContext(object);
  
// Compiling code
vm.runInContext('globalVar += 2;', object);
  
// Displays the context
console.log("Context: ", object);
  
// Displays value of global variable
console.log("Global Variable is ", global.globalVar);

输出:这里,上下文中的 globalVar 是 22,输出为 (20+2 = 22) 但 globalVar 的值仍然是 5。

Context:  { globalVar: 22 }
Global Variable is  5

参考: https://nodejs.org/api/vm.html#vm_vm_createcontext_contextobject_options