Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从JS文件分配匿名函数_Javascript - Fatal编程技术网

Javascript 如何从JS文件分配匿名函数

Javascript 如何从JS文件分配匿名函数,javascript,Javascript,希望大家都做得好。 我正在做一个项目,它使用fabric.js,我有一个js文件,看起来像这样: (function(){ this.foo = 'bar'; this.bar = 'foo'; ........... ........... ........... ........... })(); 现在,如果我想将上述脚本的结果存储到一个全局变量中,如何实现这一点? 我想要这个: window.xyz = (function(){

希望大家都做得好。

我正在做一个项目,它使用fabric.js,我有一个js文件,看起来像这样:

(function(){
    this.foo = 'bar';
    this.bar = 'foo';
    ...........
    ...........
    ...........
    ...........
})();
现在,如果我想将上述脚本的结果存储到一个全局变量中,如何实现这一点?
我想要这个:

window.xyz = (function(){
    this.foo = 'bar';
    this.bar = 'foo';
    ...........
    ...........
    ...........
    ...........
})();

但是,正如我所说的,这段代码位于一个单独的JS文件中,我如何才能实现这一点?

除非您可以更改另一个文件,使其将结果放入全局或导出其结果,否则您不能直接执行您所说的要执行的操作

间接方法是将文件作为字符串读取,在字符串开头添加
return
,然后通过
new Function
将其转换为代码:

window.xyz = new Function("return " + theFileContents)();
不建议这样做,除非您完全信任文件的内容(就像您信任通过
导入
要求
加载的文件一样)。如果你可以相信它,这是可行的,但这是一个解决办法

真正的解决方案是修改另一个文件


您说过这是在浏览器中。这意味着您可以使用加载其他文件:

fetch("./the-other-file.js")
.then(response => {
    if (!response.ok) {
        throw new Error(`HTTP error ${response.status}`);
    }
    return response.text();
})
.then(code => {
    window.xyz = new Function("return " + code)();
})
.catch(error => {
    // ...handle/report error...
});

这就像HTML中的
一样信任该文件的内容。

iLife会返回任何东西吗?如果是这样的话,那么如果结果在一个单独的文件中,那么它就会被丢弃。你展示的关于那个生命的内容是可疑的。它正在分配给
this.foo
this.bar
,但是该调用中的
this
要么是
未定义的
(在严格模式下),要么是对全局对象的引用(在松散模式下)。我如何将文件读取为字符串?@talhaquddos-这取决于您所处的环境。您研究过如何在您的环境中将文件作为字符串读取吗?我在前端环境中,所以我不确定是否可以读取文件。@Talhaquddos-如果前端指的是浏览器,则可以使用读取来自同一来源(或通过CORS列出您正在执行此操作的页面来源的任何其他来源)的文件。