Functionオブジェクト

Javascriptを勉強中なのですが,Functionオブジェクトで疑問が。

f = {foo: function(a){print a}};

こんな感じで無名の関数オブジェクトを作れます。f.foo(10)とすれば10がプリントされます。こんな関数オブジェクトを少しずつパラメータを変えてたくさん作ろうと思いました。ところが

for (i=0; i<10; i++) {
   f = {foo: function(a){print a+i}};
}

とやると,「print a+i」は関数評価時まで評価されないので,ループ中の値に関係なく,関数評価時のスコープにある"i"を探して値がセットされてしまいます。本当は「function(a){print a+0}」から「function(a){print a+9}」までの関数を作りたいのです。どうすればいいのでしょう?