3

すべて、私はjavascript OOに精通していません。それを試してみた後、オブジェクト定義について少し混乱した質問があります。以下のコードとコメントを確認してください。ありがとうございます。

    GlobalUtility = function() {
            this.templeteCode = "123";

            this.Init();
//why can not put this code here,
//there is an error says GetOriginalSource is not a function . 
//This is not like the classical OO constructor which can call any methods in class.
            this.Init = function() {
                var source=this.GetOriginalSource();
                alert(source + " is ok.");
            },//I found I can end this statement by , or ; Is there any difference between them?

            this.GetOriginalSource=function(){
                return "abc";
            };
            //this.Init(); putting this code here is ok .

        };
4

3 に答える 3

3
  1. 関数を呼び出す前に関数を定義する必要があります。
  2. JavaScript のセミコロンは省略可能です。基本的に、セミコロンはステートメントを終了するために使用され、コンマはオブジェクトを操作するときに使用されます。これらの記事JavaScript 変数の定義を読んでみてください: カンマ vs. セミコロンおよび Do you recommend using semicolons after every statement in JavaScript?

Javascript は簡単な方法で記述できます * javascript クラスの定義を参照してください。しかし、私はBase.jsを使用することをお勧めします。

おそらくこれが必要ですが、読むのはそれほど楽しいものではありません:) JavaScriptパターン

于 2013-03-12T10:57:25.047 に答える
1

これを試して:

GlobalUtility = function () {
            Init();


            this.templeteCode = "123";
            this.Init = Init;       
            this.GetOriginalSource = GetOriginalSource;

            //function declaration
            function Init() {
                var source = GetOriginalSource();
                alert(source + " is ok.");
            }
            function GetOriginalSource() {
                return "abc";
            }
};

実行時にまだ定義されていない関数を呼び出そうとしています。

于 2013-03-12T10:29:50.673 に答える
0

this.GetOriginalSource=function(){関数をオブジェクトに追加します。この行の前にはありません。しかし、あなたはそれを前に呼び出そうとします。

于 2013-03-12T10:12:00.947 に答える