2015-07-13 117 views
0

里面我有这样的事情:如何调用javascript函数另一个函数

var yourNamespace = { 

    foo: function() { 
     ..... 
    }, 

    bar: function() { 
     function foobar() {.... 
     } 
    } 
}; 

是否有可能为foo内部调用,在foobar的功能栏里面?

+1

号名为“foobar的”功能是本地分配给“栏”属性的函数。除非“bar”外部函数中的其他代码以某种方式暴露了“foobar”函数,否则它是私有的,不能从外部“bar”访问。 – Pointy

+0

简短的回答是否定的。但是如果你对你想要达到的目标稍作解释,我们可能会给你一些很好的建议。 – light

回答

1

有了您的确切结构,你可以不但是你可以做这样的事情:

var yourNamespace = { 
    foo: function() { 
     ..... 
     yourNamespace.foobar() 
    }, 
    bar: function() { 
     function foobar() {....} 
     yourNamespace.foobar = foobar; 
    } 
}; 

或者更好,(IMO):

var yourNamespace = { 
    foo: function() { 
     ..... 
     yourNamespace.bar.foobar() 
    }, 
    bar: function() { 
     yourNamespace.bar.foobar = function() {....} 

    } 
}; 

请注意:在这两种情况下,bar()必须先运行foo()否则foobarundefined

2

这只是一个简单的模块模式。你应该做的是让它自己的模块,并从该模块返回foobar。例如:

var yourNamespace = { 

    foo: function() { 
     this.bar.foobar(); 
    }, 

    bar: { 
     abc: '', 
     foobar: function() { 
      console.log('do something'); 
     } 
    } 
}; 

或者你可以做更多的事情是这样的:

var yourNamespace = { 
    foo: function() { 
     var bar = this.bar(); 
    }, 
    bar: function() { 
     var abc = ''; 
     function foobar() { 
      console.log('return abc or do something else'); 
      return abc; 
     } 
     return { 
      foobar: foobar 
     } 
    } 
}; 
相关问题