gpt4 book ai didi

javascript - 将一个文件中的上下文传递给另一文件中定义的函数

转载 作者:太空宇宙 更新时间:2023-11-04 03:15:51 25 4
gpt4 key购买 nike

第一个文件,utils.js,有一个模仿 shell 的函数,以便用户可以输入 javascript 代码:

const readline = require('readline-sync');

var x = {
shell: function(){
while(1) {
let code = readline.question(">> ");
try {
console.log(eval(code));
} catch (e) {
console.log(e.message);
}
}
}
}

module.exports = x;

第二个文件,main.js 使用上面的 shell 函数:

const utils = require('./utils.js');

var country = "india";
var names = ["x", "y", "z"]
function foo(){...}
function bar(){...}

utils.shell();

我一直在尝试将第二个文件的上下文传递给 shell 函数,以便我能够从 shell 内访问第二个文件中的函数和变量。但到目前为止我还没有成功。 enter image description here

我用call和其他一些方法弄乱了一些,但它们都失败了。非常感谢任何帮助..

注意:
utils.shell.call(this) 正在将空对象 {} 传递给 shell 函数

最佳答案

在上面的 main.js 中,您已经使用 var 声明了变量。所以它不会在 this 上下文中设置这些。所以我用这样的方式重写了代码,

main.js

const utils = require('./utils.js');

country = "india";
names = ["x", "y", "z"];
foo = function (){

}
bar = function (){

}
utils.shell.call(this);

和utils.js

const readline = require('readline-sync');

var x = {
shell: () => {
while(1) {
let code = readline.question(">> ");
try {
console.log(eval(code));
} catch (e) {
console.log(e.message);
}
}
}
}

module.exports = x;

现在,在 utils 中,您将不会获得空对象,而是会获得所有四个成员(foo、bar、country、names)。

关于javascript - 将一个文件中的上下文传递给另一文件中定义的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56453617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com