Javascript 需要原型内部或外部的功能? 我经常使用这样的原型:

Javascript 需要原型内部或外部的功能? 我经常使用这样的原型:,javascript,node.js,prototype,Javascript,Node.js,Prototype,在不同的文件中反复要求相同或类似的功能。 要求元素在范围内还是在范围外更好,如下所示 我想它应该在外部,否则我会在代码中创建大量元素副本,否? var Element = require("./Element.js") var _ = function(){ this.element = new Element(); this.stuff; } _.prototype.setStuff = function(stuff){ this.stuff = s

在不同的文件中反复要求相同或类似的功能。 要求
元素
在范围内还是在范围外更好,如下所示

我想它应该在外部,否则我会在代码中创建大量元素副本,否?

var Element = require("./Element.js")
var _ = function(){
    this.element = new Element();
    this.stuff;
}
_.prototype.setStuff = function(stuff){
    this.stuff = stuff
}
_.prototype.doStuff = function(){
    this.stuff();
}

module.exports = _;

谢谢。

这里元素应该在uu函数范围内定义,除非它是在IIFE内定义的。 如果它是在IIFE中定义的,那么就不会有任何问题,否则元素将暴露到窗口范围中,使用控制台我们可以重写元素函数


希望这对您有所帮助。

因为这是一个node.js模块,所以这里有几个注意事项:

  • require()
    是同步的。因此,您永远不希望在实时服务器请求中使用它,因为这会阻碍服务器的可伸缩性。在初始化模块和服务器时,通常需要使用
    require()
    一次

  • node.js模块中声明的变量仅适用于该模块。从技术上讲,模块作用域位于模块函数内,因此声明的任何变量都已经是局部变量,因此不需要任何额外的作用域保护

  • 模块被缓存。因此,如果在同一条路径上多次执行
    require()
    ,速度会非常快。在第一次实际加载和初始化模块后,所有后续调用只返回相同的缓存模块句柄。因此,不要试图破坏代码的结构来减少调用
    require()
    的位置。编写干净的代码,如果这需要在同一个模块上调用几次
    require()
    ,那没什么大不了的

  • 在不同的环境中反复要求相同或类似的功能 文件夹。是否需要范围内的元素或 是否超出以下范围

    您通常希望将
    require()
    语句放在node.js模块的最高级别,因为您希望在模块首次初始化时对它们进行一次初始化,并且希望与模块中的所有代码共享该模块句柄。如果您的代码非常复杂,您想在多个不同的位置为同一模块调用
    require()
    ,以使代码更加分区,那么您可能应该将代码分解为单独的模块,并让每个模块
    require()
    根据自身需要进行处理

    我想它应该在外面,否则我会创造很多 我的代码中都有元素的副本

    在模块的最高作用域之外。几乎没有理由不只加载一次模块,并与模块中可能要使用它的所有代码共享模块句柄



    在一些特殊情况下,您可能希望仅在某些特定条件下,仅在需要模块时,在运行时动态加载模块。由于加载模块的同步性,这种情况很少见,并且在执行此操作时会对性能产生影响,因此很少执行此操作。因此,在我之前的建议中,我不想说得太绝对,但我还想解释一下,仅按需加载某些内容是很少见的,而且会产生后果。

    因为使用了
    require()
    ,我假设这段代码位于
    node.js
    模块中,因此您不需要IIFE来限制在顶层定义的变量的范围,因为它们的范围已经局限于模块。而且,node.js中没有
    窗口范围
    。感谢您的详细回答@jfriend00@jfriend00所以Op的代码不是动态加载模块,对吗?他将
    require()
    放在模块的最高级别,对吗?那么他的模式好吗?或者,如果他执行类似于
    var inst=new.element()
    的操作,他是否会多次使用require。我不确定他的模式是否好。你觉得怎么样?@jackblank-现在显示OP的代码,很好。他们在问是否应该改变它。