2012-01-19 13 views
2

私はStack Overflowと一般的なWebを検索してきました。これは、従来のJavaScriptで見られるようなものです。これまで私は運があまりなかったので、実際に質問を投稿するという極端な措置を講じることに決めました。 :-)JavaScriptオブジェクトの作成方法

コードは超古いものではありませんが、私がここに来る前に残していた開発者とプロジェクトに私の関与を先行させています。

だからここに私達は行く:

通常、私は、JavaScriptの 'クラス' を作成するコード@探していたとき、私のようなものを参照してください。また

var SomeClass = function() { ..stuff.. } 

...other code... 

var objSomeClass = new SomeClass(); 

おなじみJavaScriptがリテラルである:

var someLiteral = { ..stuff.. } 

...other code... 

var someResult = someLiteral.someFunction(); 

私がレガシーコードで見ているのは、2つのスタイルが組み合わされているように見えます。それでは、私たちが持っていることは次のとおりです。

var someLiteral = { ..stuff.. } 

...other code... 

var objSomeLiteral = new someLiteral(); 

はまた、同じコードに次のように宣言されている:

function doStuff() { ..stuff.. } 

...other code... 

var objDoStuff = new doStuff(); 

繰り返しますが、私は見たことがない誰もが前に、非常にこのようなコードを記述します。

この意味的に間違ったコードですか、それとも私が気付いていないようなやり方で正当な理由がありますか?いつでも可能ですが、私はこの時点でJavaScriptの専門知識を主張していません。

コードは間違いなく機能しますが、「良い」コードでなければ、書き直したいと思うでしょう。私はちょうどそのような肛門です。 :-)

ありがとう!

+0

あなたの最初と最後のケースは同じです。唯一の違いは、最初のケースでは無名関数があり、最後に無名関数があります。また、これは実際には無効なJavaScriptなので、3番目のケースを参照している参照を提供できる場合は、いいでしょう。 –

+0

元のコードを掲載したいと思っていますが、最初に重大な消毒をしなければならないような気がします。ええ、私は知っている - それはJavaScriptと技術的に本当に見たいと思った誰もがそれです。しかし私はそれをユーザー認証プロセスに結びつけているので、まだ投稿していません。 –

+0

ですから、ケース1とケース4は機能的に同等です。私はそれを知らなかった。私は実際にそれについて考えているようになりました。 :-) –

答えて

2

new <Object>は構文エラーです。それは単に有効なJavaScriptではありません。 newのオペランドは関数でなければなりません。

あなたの "クラス"構成例で示したように、コンストラクタとして関数を使用することも非常に一般的な方法です。

+0

それはまさに私が思ったことです。私がこれを走った特定のコードブロックは実際には決して実際には実行されません。これは、物事が「働く」ように見える理由を説明します。とにかく、助けてくれてありがとう。 –

関連する問題