Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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类是否就是这样的好做法?_Javascript_Performance_Ecmascript 6_Es6 Modules - Fatal编程技术网

在多个文件中实现javascript类是否就是这样的好做法?

在多个文件中实现javascript类是否就是这样的好做法?,javascript,performance,ecmascript-6,es6-modules,Javascript,Performance,Ecmascript 6,Es6 Modules,我目前正在处理一个庞大的项目,其中包含8000多行的类实现 我不想创建子类来对函数进行分组,因为这样会造成名称空间混乱 我想到的是有一个带有类声明的文件,我在其中声明了类中的所有方法,然后在不同的文件中实现并导出这些方法。在实现文件中,该方法采用一个额外的参数,\u this,它是对类实例的引用,用于访问类的成员和方法 示例:mybigclass.js: 在adders.js中: 我不是javascript方面的专家,所以我想知道这到底有多糟糕。它是否会用不必要的函数帧淹没堆栈?这会增加很多开销

我目前正在处理一个庞大的项目,其中包含8000多行的类实现

我不想创建子类来对函数进行分组,因为这样会造成名称空间混乱

我想到的是有一个带有类声明的文件,我在其中声明了类中的所有方法,然后在不同的文件中实现并导出这些方法。在实现文件中,该方法采用一个额外的参数,
\u this
,它是对类实例的引用,用于访问类的成员和方法

示例:mybigclass.js:

在adders.js中:

我不是javascript方面的专家,所以我想知道这到底有多糟糕。它是否会用不必要的函数帧淹没堆栈?这会增加很多开销吗?还有什么替代方案

注意:代码示例只是一个示例,我使用的类方法实际上属于同一个类,并且不是多余的


我正在使用
webpack
将其捆绑在一起。

@zx485这是一个网络应用程序,我认为它和photoshop一样复杂。多个可拖动窗口,具有相关的图形和表格、同步光标、图形测量等。我认为,通过架构设计,首先,这是一种常见的做法,您试图做到的是“集中化”或“单一真相来源”。通常在js中,我们不会直接将
这个
作为参数传递给函数,而不是使用
.call(this,arg…
.apply(this,[arg])
。要保留
上下文。还有一件事,你可以谷歌关键词“工厂模式设计”,它应该对你有用case@DucHong非常感谢。然后在“header”文件中,我会使用相同的“interface”函数,但使用
funcname.call(this,arg..)
instad,用
this
作为参数来调用它们?实际上,使用
.call(this)
.bind(this)
.apply(this)
需要一些实践和痛苦才能得到这个概念,如果你知道我的意思。在所有子函数将从中继承的“root”文件中,您不需要执行pass
this
,只需将其视为调用它的所有上下文的最通用的处理程序即可。在我看来,这项工作需要一点js的实践经验,正如你所说,你没有太多的经验,试着用一个小规模的实验,看看你能走多远go@DucHong
bind()
被丢弃,因为它创建了一个新函数,这意味着每个实例都有新的函数对象,这并不理想。另一种方法是使用“接口”函数的调用或应用。
import {
 add2,
 add3
} from './adders.js'

class MyBigClass{
  constructor(){
    this.somevalue=0;
  }
  add2(){
    add2(this);
  }
  add3(){
    add3(this);
  }
}
function add2(_this){
  _this.somevalue+=2;
}
function add3(_this){
  _this.somevalue+=3;
}

export {add2, add3}