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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。