看板 Ajax 關於我們 聯絡資訊
例如: var elements = ["FunctionA","FunctionB","FunctionC"]; $.each(elements, function(i, e) { var elements[i] = new Function("a", "b", "return a * b"); }); $(function(){ var a = FunctionA(1,1); var b = FunctionB(1,1); var c = FunctionC(1,1); console.log(a); console.log(b); console.log(c); }); 請問這有可能做到嗎? 先謝謝大大回答。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.225.229 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1484305487.A.840.html
ATPS4869: search: eval 01/13 19:55
mrbigmouth: 不需要eval也能做到 就一般宣告配合scope即可 01/13 20:47
mrbigmouth: 真的沒辦法用with也比用eval好 01/13 20:48
mrbigmouth: 但我看不懂你到底想要做啥 所以沒辦法幫你改 01/13 20:48
dannypsnl: with不是拿掉了? 01/13 21:32
mrbigmouth: 還是可以用吧 只是跟eval一樣都是建議不要用 01/16 19:53
mrbigmouth: 事實上我也沒遇過非得用eval/with處理的問題 當沒有 01/16 19:54
mrbigmouth: 最好 01/16 19:54
fiorentino: 可以研究一下AngularJs怎麼做到DI,也許可以解決你的 02/01 11:56
fiorentino: 問題 02/01 11:56
Hevak: window.FunctionA = function (a, b) { return a*b; }; 02/04 23:18
Hevak: 所以: 02/04 23:19
Hevak: $.each(elements, function (i, e) { 02/04 23:19
Hevak: window[e] = function (a, b) {return a*b;}; 02/04 23:20
Hevak: } 02/04 23:20
Hevak: 因為你平常直接宣告function或變數的scope是在global下, 02/04 23:21
Hevak: nodejs下是global,瀏覽器下是window 02/04 23:21
Hevak: 所以要達到一樣的效果就是把東西指派到global(window)下 02/04 23:22