JavaScript 函数组织

标签 javascript oop function

我不太确定“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/

相关文章:

function - R 中的内置函数通常是否经过优化?

javascript - 使用 Swagger 和 Node.js 以及 SQL Server 作为数据库的 REST API

javascript - 将 jQuery 应用到由 ajax 加载的 HTML 元素

javascript - 如何在javascript中将对象附加到数组?

php - 代码注释 - 是否应该对使用的设计模式进行注释

javascript - 在显示 Bootstrap 弹出窗口之前执行功能?

c++ - 是否从 C++ 中的 for 循环不良做法返回函数值?

javascript - 如何从字符串中获取字符数组?

javascript - 为什么不对对象属性使用闭包?

oop - 如何在 OOP 中实现多种类型的对象?