JavaScript函数如何调用原型函数name.argument在以下程序中工作?
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;
}
答案 0 :(得分: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();