vm.createContext([contextObject[, options]])
曆史
| 版本 | 變化 |
|---|---|
| v14.6.0 | 現在支持 |
| v10.0.0 | 第一個參數不能再是函數。 |
| v10.0.0 | 現在支持 |
| v0.3.1 | 添加於:v0.3.1 |
參數
contextObject<Object>options<Object>name<string> 新創建的上下文的人類可讀名稱。 默認:'VM Context i',其中i是已創建上下文的升序數字索引。origin<string> Origin 對應於新創建的用於顯示目的的上下文。源的格式應類似於 URL,但僅包含方案、主機和端口(如有必要),例如對象的URL屬性的值。最值得注意的是,此字符串應省略尾部斜杠,因為它表示路徑。 默認:url.origin''。codeGeneration<Object>microtaskMode<string> 如果設置為afterEvaluate,則微任務(通過Promises 和async functions 安排的任務)將在腳本通過後立即運行。在這種情況下,它們包含在script.runInContext()timeout和breakOnSigint範圍內。
- 返回: <Object> 上下文對象。
如果給定 contextObject ,則 vm.createContext() 方法將 prepare
that object 以便它可以用於調用 或 vm.runInContext() 。在此類腳本中,script.runInContext() contextObject 將是全局對象,保留其所有現有屬性,但也具有任何標準global object 具有的內置對象和函數。在 vm 模塊運行的腳本之外,全局變量將保持不變。
const vm = require('node:vm');
global.globalVar = 3;
const context = { globalVar: 1 };
vm.createContext(context);
vm.runInContext('globalVar *= 2;', context);
console.log(context);
// Prints: { globalVar: 2 }
console.log(global.globalVar);
// Prints: 3
如果 contextObject 被省略(或顯式傳遞為 undefined ),則將返回一個新的空 contextified 對象。
vm.createContext() 方法主要用於創建可用於運行多個腳本的單個上下文。例如,如果模擬 Web 瀏覽器,該方法可用於創建表示窗口全局對象的單個上下文,然後在該上下文中一起運行所有 <script> 標記。
提供的上下文的name 和origin 通過 Inspector API 可見。
相關用法
- Node.js vm.createContext()用法及代碼示例
- Node.js vm.SyntheticModule.setExport(name, value)用法及代碼示例
- Node.js vm.SourceTextModule.createCachedData()用法及代碼示例
- Node.js vm.Module用法及代碼示例
- Node.js vm.runInThisContext(code[, options])用法及代碼示例
- Node.js vm.isContext()用法及代碼示例
- Node.js vm.measureMemory([options])用法及代碼示例
- Node.js vm.runInNewContext()用法及代碼示例
- Node.js vm.SyntheticModule用法及代碼示例
- Node.js vm.runInNewContext(code[, contextObject[, options]])用法及代碼示例
- Node.js vm.Script.createCachedData()用法及代碼示例
- Node.js vm.runInThisContext()用法及代碼示例
- Node.js vm.Script.runInNewContext([contextObject[, options]])用法及代碼示例
- Node.js vm.runInContext()用法及代碼示例
- Node.js vm.Script.runInThisContext([options])用法及代碼示例
- Node.js vm.runInContext(code, contextifiedObject[, options])用法及代碼示例
- Node.js vm.Script.runInContext(contextifiedObject[, options])用法及代碼示例
- Node.js vm.Module.link(linker)用法及代碼示例
- Node.js v8.getHeapSpaceStatistics()用法及代碼示例
- Node.js v8.deserializer.readRawBytes()用法及代碼示例
- Node.js v8.deserializer.readUint32()用法及代碼示例
- Node.js v8.serializer.writeRawBytes()用法及代碼示例
- Node.js v8.writeHeapSnapshot([filename])用法及代碼示例
- Node.js v8.Deserializer.readUint32()用法及代碼示例
- Node.js v8.getHeapCodeStatistics()用法及代碼示例
注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 vm.createContext([contextObject[, options]])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
