1

プロトタイプ関数名.argument を使用した JavaScript 関数呼び出しは、次のプログラムでどのように機能しますか?

 function getLAdd() {
     // this sets all the variables containing positions of ball and bar with their respective ids.
     var ladd = 0;
     var pball = $("#ball");
     var pbar = $("#bar");
     var bar_position = pbar.position();
     var ball_position = pball.position();
     if (ball_position.top >= window.innerHeight - 100) {
         if (ball_position.left - 10 >= bar_position.left && ball_position.left - 10 <= bar_position.left + 100) {
             ladd = -2;
         }
         if (ball_position.left + 10 <= bar_position.left + 200 && ball_position.left + 10 >= bar_position.left + 100) {
             ladd = 2;
         }
     }
// how does getLAdd.ladd work ? Is this a type of dynamic call ?
     if (ladd == 0) {
         ladd = getLAdd.ladd;
     }
     if (ball_position.left <= 15 || ball_position.left >= window.innerWidth - 40) 
         ladd = -ladd;

     getLAdd.ladd = ladd;
     return ladd;
 }
4

1 に答える 1

3

JavaScript の関数はオブジェクトであるため、プロパティを追加できます。

このコードでは、という名前のプロパティが関数にladd追加され、次の行で取得されています。getLAdd

ladd = getLAdd.ladd;

そして、この行で更新されています:

getLAdd.ladd = ladd;

どの関数でも同じことができます。

function f() {
       // get the property
    console.log(f.foo); // bar
}

   // add a property to the function object
f.foo = "bar";

   // get the property
console.log(f.foo); // bar

   // call the function
f();
于 2012-11-22T18:42:33.733 に答える