我不太确定“function x(){}”或“this.x=function(){}”之间的区别,但我必须制作一个面向对象的 JavaScript,其布局如下:
function PROJECT(){
...
...
...
this.main_call=function(...){ return this.recursive_call(...); }
this.recursive_call=function(...){
...
var local,variables;
function helper(...,ref){
...
ref.recursive_call(...);
}
...
helper(...,this);
...
}
}
x=new PROJECT();
x.main_call(input);
我的问题是,这是否是一种好的风格,或者是否有某种方法可以调用辅助函数(用于停止一遍又一遍地重复相同的代码),而无需传递“this”指针。我有点担心,因为辅助函数已经访问了 recursive_call 中的所有局部变量,但如果我尝试直接访问 this.recursive_call ,它会抛出错误。在尝试声明 this.helper=function(...){...} 时,我还遇到了变量覆盖的问题。
最佳答案
我不太明白你想做什么,但你可以改变你的关闭。像这样的事情
function PROJECT(){
this.main_call=function(){
return recursive_call();
}
var local,variables;
function helper()
{
recursive_call();
}
function recursive_call(){
helper();
}
}
x=new PROJECT();
x.main_call(input);
如果这不适合您需要做的事情,您可以随时将递归函数更改为这样的内容
this.recursive_call=function(...){
...
var local,variables;
var ref = this;
function helper(...){
...
ref.recursive_call(...);
}
...
helper(...);
...
}
关于JavaScript 函数组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2265844/