2012-12-10 56 views
1

由於某種原因,我無法將我的設置方法中的函數調用到我的init方法中。如何將方法內部嵌套的函數調用到其他方法中

// this is how I use it now(dont work) 

Plugin.prototype = { 

    settings: function(){ 

     function hello(name){ 
      alert('hi, '+name) 
     } 
    }, 

    init: function(){ 
     this.settings() 
     hello('John Doe') 
    } 

} 
+1

更好地解釋你想做 – Alexander

+0

設置在它前面有一個下劃線...'this._settings()' – Shmiddty

+0

對不起,那只是一個排字錯誤 – user759235

回答

1

這可能是你的意思:

Plugin.prototype = { 

    settings: function(){ 

    }, 

    hello: function(name){ 
     alert('hi, '+name); 
    }, 

    init: function(){ 
     this.settings(); 
     this.hello('John Doe'); 
    } 

}; 

或者,如果你想讓你好()私有的,你可以這樣做:

Plugin.prototype = function(){ 

    var hello = function (name){ 
     alert('hi, '+name); 
    }; 

    return { 
     settings: function(){ 
     }, 

     init: function(){ 
      this.settings(); 
      hello('John Doe'); 
     } 
    }; 
}(); 

jsfiddle

+0

謝謝,這可以幫助我! – user759235

4

Javascript has function scope。如果你在另一個函數中聲明一個函數,它只在外部函數中可見。

+0

同意。請參閱[這個SO問題](http://stackoverflow.com/questions/111102/how-do-javascript-closures-work)關於閉包。 – jaudette

+0

啊我認爲一個功能可以在範圍之外使用....傻我,我怎樣才能使用範圍外的功能 – user759235

+0

是的,我認爲我必須將它移動到主範圍... – user759235

相關問題