3

何が間違っていますか。オブジェクトを作成しようとしましたが、初期化しようとすると、コンソールに次のエラーが表示されます。どちらの場合も、エラーがあります。新しいです 愚かな質問で申し訳ありません

ReferenceError: Circle is not defined
    var obj = new Circle;

JS

$(function(){
        var Circle = {

                init: function() {
                    console.log("Circle initialized");
                }     
        };

});

HTML

<!DOCTYPE html>
<html>
    <head>

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
        <script src="javascript/circle.js"></script>

        <script>           

               $(document).ready(function(){
                   var obj = new Circle;

                   obj.init();
               })

        </script>

    </head>
    <body>
        <div id="test" >TODO write content</div>
    </body>
</html>

新しいアップデート

$(function(){

        window.Circle = {

                init: function() {
                    console.log("Circle initialized");
                }     
        };
       window.Circle.init();
});

....

  <head>

     <script>           

        window.Circle().init();

    </script>

</head>
4

2 に答える 2

9

別の関数内で「Circle」関数を定義しました。つまり、「準備完了」ハンドラーとして渡す無名関数です。したがって、そのシンボル ("Circle") はその関数に対してプライベートであり、他のコードからは見えません。

次のようにグローバルにすることができます。

window.Circle = {
  // ...
};

また、それを jQuery 名前空間に追加することもできます (適切な場合とそうでない場合があります。何をしているかによって異なります)。または、アプリケーション コード用に独自の名前空間を開発することもできます。または、最後に、jQuery の「準備完了」コードを組み合わせて、「Circle」オブジェクトとそれを使用するコードがすべて同じハンドラーに表示されるようにすることを検討できます。

editもう 1 つの可能性は、「Circle」宣言を「ready」ハンドラから完全に移動することです。$(function() { ... })そのオブジェクトを初期化するだけで、DOM やその他のまだ利用できないリソースを必要とする作業がプロパティ値に必要ない場合は、ラッパーを取り除くことができます。

于 2013-08-10T14:14:21.923 に答える