0

私のjavascriptコードが完全に私のWebホストにある理由の答えを探していました。私が収集したものから、これはグローバル名前空間の汚染を減らすための良い習慣であるため、javascript の公開モジュールパターンを使用してそれらを変更しようとするまで、以前は正常に機能していた既存の javascript 関数があります。この範囲外の関数呼び出しはないため、return を使用して関数を指すことはしませんでした。Visual Studio からのテスト中に、さまざまなブラウザーで問題なく動作しました。

Godaddyサーバーに設定する必要があるものはありますか? 私は彼らにサポートを求めようとしましたが、助けはありませんでした。以下は私のコードのサンプルです。私は実際にはこの範囲にもっと多くの機能を持っていますが、この質問のために短くしました。前もって感謝します。

myModule = (function () {

    //add upDate
    function timeOfUpdate {
    var timeOfUpdate = new Date(document.lastModified);
        $("#lastUpdate").append(timeOfUpdate);

    }
    //add some more functions
    function modTwo {
    //add code to execute..
    }
})();
4

1 に答える 1

2

そのモジュール定義で何をしようとしているのか正確にはわかりませんが、モジュールから何も返さないため、モジュール内の関数はモジュール内でローカルであり、モジュールの外部からは使用できません。モジュールパターンの公開に関するこのリファレンスを見ると、メソッドを含むオブジェクトを返していることがはっきりとわかります。それがモジュール変数に割り当てられているものです。

おそらく、あなたが意図したのはこれでした:

var myModule = (function () {

    return {
        //add upDate
        timeOfUpdate: function {
            var timeOfUpdate = new Date(document.lastModified);
            $("#lastUpdate").append(timeOfUpdate);

        },
        //add some more functions
        modTwo: function {
            //add code to execute..
        }
    }
})();

これにより、IIFE からオブジェクトが返されるため、myModule はメソッドtimeOfUpdate()modTwo()オブジェクトのプロパティとして持つオブジェクトになります。

次に、次のように関数にアクセスできます。

myModule.timeOfUpdate();
myModule.modTow();

モジュールの外部からこれらの関数を使用しようとしていない場合は、何をしようとしているのか、どのようなエラーが表示されているのかについて、より詳細な情報を提供していただく必要があります。うまくやっているようにIIFEでたくさんのコードをラップすることができ、それは問題を引き起こしません。そのIIFEから何も返さないかのようにモジュール名に割り当てることにはゼロポイントがあるmyModule = ...ので、少なくとも間違った方向に進んでいるように見えますが、何をしようとしているのか理解していませんこのモジュールで、またはどのようなエラーが発生したかについては、これ以上の支援はできません。


また、あなたの例はいくつかのローカル関数定義を示していますが、関数の呼び出しを示していないため、実際に関数を呼び出すコードを挿入するまで何も起こりません。

于 2015-02-10T05:10:29.817 に答える