2015-07-13 74 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 
     } 
    } 
}; 
相關問題