0


スクリプトを開始する正しい方法が見つかりません。私はいくつかの変数を持っているので、ドキュメントの準備ができたときの関数、次に変数myFunction、loadIMGなど、そしてコードの最後にmyFunction.init()を呼び出しますが、Firebugは「myFunction.init( )は関数ではありません」。どうすれば正しい方法で開始できますか?助けてくれてありがとう:

$(function () {  
    //...  
    var myFunction = (function() {   
        var init = function() {  
            loadIMG();     
        },  
        loadIMG = function() {  
            etc.  
        //...  
        //then at the end of the page :  
    })(); /* myFunction */  
    myFunction.init();  
});
4

3 に答える 3

1

コンストラクターとして扱いたい場合はmyFunction、2つのことのいずれかを行う必要があります。

  1. 必要なメソッドを持つオブジェクトを返します。

    var myFunction = (function() {   
        var init = function() {  
            loadIMG();     
        },  
        loadIMG = function() {  
            etc.  
        //...  
        return {
            "init": init
        };
    })();
    
  2. 実際にコンストラクターを作成し、newキーワードを使用します。パブリックメソッド/変数をプロパティとして割り当てますthis

    var myFunction = new (function() {   
        this.init = function() {  
            loadIMG();     
        };
        var loadIMG = function() {  
            etc.  
        //...
    })();
    
于 2011-04-22T23:42:42.800 に答える
0

(function () {})()ただではなく書いているので無名関数を評価していますがfunction () {}、それは間違いですか?そうでない場合、無名関数は新しい関数を返しますか?typeof myFunctionそれが本当にあるかどうかを確認してください"function"

于 2011-04-22T23:36:15.520 に答える
0

表示されているスコープの外で関数にアクセスしようとしています。$(function(){})内でmyFunction変数を宣言しているため、そのスコープ内でのみ表示されます。

アクセスしようとしているポイントでアクセスする場合は、関数の外部でmyFunctionを次のように宣言する必要があります。

var myFunction;
$(function () {
    //...
    myFunction = (function() {
...

次に、スクリプト内の任意の場所でmyFunctionを参照できます。

于 2011-04-22T23:39:05.853 に答える