【问题标题】:organize javascript,php code for easy to read way when have nested functions当有嵌套函数时,组织 javascript、php 代码以便于阅读
【发布时间】:2014-11-22 19:46:54
【问题描述】:

这是我的示例代码...

one();


function one()
{
    function abc()
    {
      //code 
    }


    function bcd()
    {
      //code 
    }

    abc();
    bcd();
}

这是关于 php,javascript。我想用或不使用面向对象的编程技术来构建这个代码易于阅读的方式。

如何从外部函数一调用函数 abc..?

【问题讨论】:

  • 通常,你不会在比你想使用它的范围更窄的范围内定义一个函数。
  • 使用类或命名空间来做到这一点。
  • 在 javascript 上我建议不要嵌套很多匿名函数。如果你去嵌套函数最好给一些名字,因为它更容易看到堆栈和调试
  • @rkmax — 不涉及任何匿名函数。
  • 下面的回答可能对你有帮助:stackoverflow.com/questions/16063394/…

标签: javascript php oop


【解决方案1】:

有多种方式:

// when using one() as a constructor for an object
function one()
{
    this.abc = function() { };
    this.def = function() { };
}
obj = new one();
obj.abc();


// prototype
function one()
{

}
one.prototype.abc = function() { };
one.prototype.def = function() { };
obj = new one();
obj.abc();


// module pattern
function one()
{
    var abc = function () { };
    var def = function () { };
    return {
        abc: abc,
        def: def
    }
}
obj = one();
obj.abc();


// or just assign it as a property to your function
function one()
{

}
one.abc = function() { }
one.def = function() { }
one.abc();

选择适合你的。

【讨论】:

    【解决方案2】:

    您示例中的嵌套函数在函数范围内,并在函数 one() 完成后被丢弃;所以它们不会暴露在外。

    可以使用闭包来公开函数...How do JavaScript closures work?...http://www.sitepoint.com/javascript-closures-demystified/...但是给出您的简单示例,最简单的方法是使用函数创建的 abc 命名空间。

    function abc() {
       abc.def = function () {alert("hello")}
    }
    abc(); // add def function to abc namespace.
    abc.def(); // call def function which is part of the abc object.
    

    为避免使用对象表示法,可以将变量传递给函数。

    function abc(operator) {
       function def() {alert("hello")}
    
       if (operator == def) {def()}
    }
    abc("def");
    

    但是,这比使用对象表示法更难阅读,因为我需要查看函数以确定 abc.def() 告诉我正在调用作为 abc 一部分的 def() 的地方发生了什么。它会导致性能下降,因为每次调用都需要重新创建 def。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 2021-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多