2

違いは何ですか:

pause: function () {
    this.state.gamePaused = true;
},

function pause() {
    this.state.gamePaused = true;
}
4

4 に答える 4

3

最初の例はおそらくオブジェクトの一部です。つまり、pauseはJavascriptオブジェクトの関数であり、2番目の例はスタンドアロン関数として一時停止します。

私は次のようなもので最初の例を見ることを期待しています:

var someObject = {
  pause: function () {
    this.state.gamePaused = true;
  },
  anotherProperty : "some value"
}

したがって、次のように使用されます。

someObject.pause();

一方、2番目の例は次のように使用されます。

pause();
于 2012-11-29T05:18:12.317 に答える
3

どちらも関数(別名メソッド)であり、2つの異なる設定で使用するために2つの異なる方法で宣言されているだけです。

JSでは、次のようにオブジェクトを定義できます。

var obj = {
    flagVariable:  false,
    intVariable:    115,
    stringVariable:  'hello world',
    functionVariable:  function() { alert("Hello world!"); }
}

この例では、オブジェクトの最後のプロパティは関数です。これは無名関数です。つまり、それ自体は名前が付けられていません。そのため、「関数」と「()」の間に名前はありません。したがって、次のように、割り当てた変数を使用して参照します。

foo.functionVariable();

また、それを渡して、割り当てた変数の名前で実行することもできます。

var callback = foo.functionVariable;
callback();

関数はほぼどこでも宣言できるので、グローバルスコープでは次のように言うことができます。

function pause () {  alert("Hello world!"); }

これは名前付き関数を定義し、名前でどこからでも実行できます。

pause(); 

ちなみに、これも渡すことができます:

var callback = pause;
callback();
于 2012-11-29T05:24:07.350 に答える
2

ECMAScriptは、メソッドをプロパティの値である関数として定義します。したがって、オブジェクトに関数を配置するとき、それをそのオブジェクトのメソッドと呼びます。

それで、質問に答えるために、最初のものは方法です。

ECMAScript4.3.27-メソッド

プロパティの値である関数。

注関数がオブジェクトのメソッドとして呼び出されると、オブジェクトはそのthis値として関数に渡されます。

于 2012-11-29T13:46:57.837 に答える
1
  1. オブジェクトにアタッチされた、これはまだ関数ですが、メソッドと呼ばれます。オブジェクトにアタッチされ、そのthisパラメータはそのオブジェクトを参照します。そのように呼んでください:obj.pause()

  2. グローバル名前空間で定義されているこの関数は、どこからでも呼び出すことができ、windowオブジェクトにアタッチされます。関数内thisのオブジェクトを参照します。window単にそのように呼んでください:pause()

後者が1つと呼ばれることはめったにありませんが、両方の関数は実際にはメソッドであることに注意してください。

于 2012-11-29T13:50:47.923 に答える