在多个文件中实现javascript类是否就是这样的好做法?
我目前正在处理一个庞大的项目,其中包含8000多行的类实现 我不想创建子类来对函数进行分组,因为这样会造成名称空间混乱 我想到的是有一个带有类声明的文件,我在其中声明了类中的所有方法,然后在不同的文件中实现并导出这些方法。在实现文件中,该方法采用一个额外的参数,在多个文件中实现javascript类是否就是这样的好做法?,javascript,performance,ecmascript-6,es6-modules,Javascript,Performance,Ecmascript 6,Es6 Modules,我目前正在处理一个庞大的项目,其中包含8000多行的类实现 我不想创建子类来对函数进行分组,因为这样会造成名称空间混乱 我想到的是有一个带有类声明的文件,我在其中声明了类中的所有方法,然后在不同的文件中实现并导出这些方法。在实现文件中,该方法采用一个额外的参数,\u this,它是对类实例的引用,用于访问类的成员和方法 示例:mybigclass.js: 在adders.js中: 我不是javascript方面的专家,所以我想知道这到底有多糟糕。它是否会用不必要的函数帧淹没堆栈?这会增加很多开销
\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”文件中,您不需要执行passthis
,只需将其视为调用它的所有上下文的最通用的处理程序即可。在我看来,这项工作需要一点js的实践经验,正如你所说,你没有太多的经验,试着用一个小规模的实验,看看你能走多远go@DucHongbind()
被丢弃,因为它创建了一个新函数,这意味着每个实例都有新的函数对象,这并不理想。另一种方法是使用“接口”函数的调用或应用。
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}