7

私は混乱した初心者です。次のようにJavaScriptオブジェクトを作成することをチュートリアルで読みました。

function myObject() {
    this.myProperty = "a string";
    this.myMethod = function () {
        //Method code
    }
}

次に、次のようにオブジェクトを作成することをどこかで読みました。

var myObject = {
    myProperty: "a string",
    myMethod : function () {
        //Method code
    }
}

両者の(非主観的な)違いは何ですか?公式の正しい方法と間違った方法はありますか?

4

3 に答える 3

5

どちらの宣言も正しいですが、セマンティクスが異なります。

最初のタイプの宣言では、オブジェクトのインスタンスを作成できます。

var t = new myObject();
// then use t
t.myProperty = "some value";

var otherT = new myObject();
otherT.myProperty = "some other value";

2 つ目はほとんど静的オブジェクトのようなものです。

myObject.myProperty = "some value";
于 2010-10-19T14:59:35.283 に答える
3

これが直接の比較です...

function myObject() {

これは、JavaScript が解析されるときに関数を宣言します...

var myObject = function () {

これにより、実行時に関数が宣言されます。

「var」メソッドを使用する場合は、使用する前に関数を宣言する必要があります...この例を試してください。

myFunction(); // Works
myVarFunction(); // Boom

var myVarFunction = function () { alert("Hi"); };

function myFunction() { alert("Hi"); };

では、より注意して使用する必要があるのに、なぜ「var」メソッドを使用するのでしょうか? それはすべてスコープに関係しています...スコープ関数はより良いと考えられています。

更新: そして、ここにいくつかの素晴らしい説明があります:

var functionName = function() {} vs 関数 functionName() {}

于 2010-10-19T15:00:21.007 に答える
0

2 つの主な違いは、1 つの変数がローカルで、もう 1 つの変数がグローバルであることです。「var」は基本的に変数のスコープを定義します。

変数値の割り当てに var を追加すると、javascript は、変数が割り当てられている関数に限定され、別の関数内の同じ名前の変数と衝突しないようにします。

var を使用しない場合、それはグローバル関数として宣言され、衝突の可能性が発生する可能性があります。そのため、変数値の割り当ての前に「var」を使用することを常にお勧めします。必要に応じて、クロージャーに無名関数を使用します。

于 2013-10-19T21:55:45.653 に答える