作者sivle01 (好耶,好運還沒走!)
看板Ajax
標題[問題] 請問可以動態宣告Function嗎?
時間Fri Jan 13 19:04:44 2017
例如:
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://webptt.com/m.aspx?n=bbs/Ajax/M.1484305487.A.840.html
1F:→ ATPS4869: search: eval 01/13 19:55
2F:→ mrbigmouth: 不需要eval也能做到 就一般宣告配合scope即可 01/13 20:47
3F:→ mrbigmouth: 真的沒辦法用with也比用eval好 01/13 20:48
4F:→ mrbigmouth: 但我看不懂你到底想要做啥 所以沒辦法幫你改 01/13 20:48
5F:→ dannypsnl: with不是拿掉了? 01/13 21:32
6F:推 mrbigmouth: 還是可以用吧 只是跟eval一樣都是建議不要用 01/16 19:53
7F:→ mrbigmouth: 事實上我也沒遇過非得用eval/with處理的問題 當沒有 01/16 19:54
8F:→ mrbigmouth: 最好 01/16 19:54
9F:→ fiorentino: 可以研究一下AngularJs怎麼做到DI,也許可以解決你的 02/01 11:56
10F:→ fiorentino: 問題 02/01 11:56
11F:→ Hevak: window.FunctionA = function (a, b) { return a*b; }; 02/04 23:18
12F:→ Hevak: 所以: 02/04 23:19
13F:→ Hevak: $.each(elements, function (i, e) { 02/04 23:19
14F:→ Hevak: window[e] = function (a, b) {return a*b;}; 02/04 23:20
15F:→ Hevak: } 02/04 23:20
16F:→ Hevak: 因為你平常直接宣告function或變數的scope是在global下, 02/04 23:21
17F:→ Hevak: nodejs下是global,瀏覽器下是window 02/04 23:21
18F:→ Hevak: 所以要達到一樣的效果就是把東西指派到global(window)下 02/04 23:22