1

带有原型函数 name.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 回答