2016-07-21 7 views
0

これは私が私のモジュールを作成する方法である:私はここに参照したモジュールで定義された別の関数で変数の値を使用するにはどうすればよいですか?

require.config({ 
    paths: { 
     'jquery': '/media/jui/js/jquery.min', 
     'templates': '/plugins/system/conversekit/templates' 
    } 
}); 

require(['jquery', 'templates'], function($) { 
    $('body').html('helo'); 
    // conversekitTemplates.test1(); 
    console.log(conversekitTemplates.test6); 
}); 

を::Accessing variables from other functions without using global variables

をしかし、私はしたくない

var $ = $ || false; 

if (typeof jQuery !== 'undefined') { 
    $ = jQuery; 
} 

var conversekitTemplates = { 
    test1: function() { 
     alert('hello everyone'); 
    }, 
    test2: function() { 
     $('body').css('background-color', '#fff'); 
    }, 
    test3: 123, 
    test4: 440, 
    test5: function() { 
     var a = apple; 
    }, 
    test6: 'h1>' + a + '</h1>'; //how to use the value of variable a here? 
}; 

これは私がそれを呼んでいる方法ですある関数から別の関数に値を渡します。関数の値を使用したいすべての関数に関数を呼び出せるようにしたいと思います。

+0

は、私はあなたが求めているものを理解してくださいしてみましょう。あなたは、あなたがその中に関数を持つモジュールを持っていて、その関数に値を持つ変数(test5など)があり、そのモジュールの外にいる誰のためにもその関数の変数の値を取得できるようにしたいと言っています。はい?もしそうなら - いいえ。変数は、そうしないと、その関数には常にLOCALになります。 のようなものを試すことができます。 - しかし、私はそれが動作するとは思わない。なぜそれをモジュールのローカルにしないのですか?あなたは簡単に得ることができます。または関数内に戻り値を使用しますか?どちらもうまくいくはずです。 –

+0

'var foo = 'bar''の代わりに' global.foo =' bar''を書くと、モジュールが変数にアクセスできるようにすることができます。 –

+0

@ MarkManning、私は関数の外部にアクセスしていません。 test6は名前空間の中にあるので、私はtest5の値にアクセスしたい。したがって、namespace.test6を呼び出すと、test5の値が一緒に表示されます。 – 112233

答えて

0

私は上記の記事でオブジェクトリテラルを作成しました。そうすれば、関数間で変数を共有できるとは思いません。

は今、私は以下のようなモジュールのパターンを作成する必要があります。

var conversekitTemplates = (function(){ 

var id = 4; 
    return { 
    test1: function(){ 
     alert(id); 
    }, 
    test2: id+3 
    }; 
})(); 

と、このようなアクセスを:

conversekitTemplates.test1(); 
alert(conversekitTemplates.test2); 
関連する問題