将创建多少内部函数的副本

hgu*_*ser 5 javascript prototype-programming

这些天我的大部分工作都与js开发有关.

但是我突然发现我对一些问题感到困惑.

检查此代码(我向自定义类添加一个方法):

MyCustomClass.prototype.fun=function(xx){
  this.options={.....}
  function innerFun01(){}
  function innerFun02(){}
}
Run Code Online (Sandbox Code Playgroud)

现在,使用它.

var mcc=new MyCustomClass();
mcc.fun(xxxx);

var mcc2=new MyCustomClass();
mcc2.fun(xxxx);
Run Code Online (Sandbox Code Playgroud)

现在,我想知道在内存中会创建多少个"innerFun01"和"innerFun02"函数的副本?

我真的很困惑.

Poi*_*nty 5

每次调用函数"fun"时,都会构造这些函数.(我认为说这些函数的新实例将被构造更正确.)

没关系.现代JavaScript运行时系统非常好.在首次解析外部函数时,可能会将源代码转换为......以及(thunks,机器代码,线程代码......),以便函数的实际"实例化"真正实现廉价.

许多功能语言具有相似的特征.(let ...)每次调用其包含函数时,都会使用a 或者某种东西声明一个本地Scheme函数.