2016-11-07 24 views
0

我已經被存儲在JSON數據下面的函數另一個對象:從構造函數創建一個匿名函數對象,並將其存儲在

function (e) { e.preventDefault();var caro=$(e.target).parents('.carousel');curr=$(caro).parents('.grid-stack-item');currInt=$(curr).find('.carousel-indicators li.active').data('slide-to');$(curr).find('.carousel-indicators li.active').removeClass('active');currInt+=1;var currLi=$(curr).find('.carousel-indicators li')[currInt];$(currLi).addClass('active');$(caro).carousel(1);$(caro).carousel('pause');var tr=$(e.target).closest('tr');data=this.dataItem(tr);wizard(1,$(e.target).parents('.grid-stack-item'),data); } 

我使用它需要在JSON字符串函數外部庫作爲JS函數附加到對象屬性。

從字面上看,代碼如下所示:

grid({ 
    click: data.functionData 
)}; 

是data.functionData被評價爲一個字符串,並在網格對象上執行的單擊事件它的結果,因爲我遇到的問題因爲數據應該是一個函數而不是一個字符串。

我需要做的就是創建一個匿名函數是什麼?

var anonFun = new Function(); 

,並採取一個事件作爲參數....

function (e) { } 

然後將其安裝在點擊事件網格...

grid({ click: function (e) { //dostuff } }); 

我接近完成這一點,但我現在的問題是我不知道如何給匿名用函數構造函數創建的函數參數'e'。

爲了從字面上給我目前的狀態,我的代碼是...

var jsonData = "function (e) { e.preventDefault();var caro=$(e.target).parents('.carousel');curr=$(caro).parents('.grid-stack-item');currInt=$(curr).find('.carousel-indicators li.active').data('slide-to');$(curr).find('.carousel-indicators li.active').removeClass('active');currInt+=1;var currLi=$(curr).find('.carousel-indicators li')[currInt];$(currLi).addClass('active');$(caro).carousel(1);$(caro).carousel('pause');var tr=$(e.target).closest('tr');data=this.dataItem(tr);wizard(1,$(e.target).parents('.grid-stack-item'),data); }"; 

var anonFunc = new Function(jsonData); 

grid({ click: anonFunc)}; 

我想我需要做一些事情,如:

var anonFunc = new Function(e, jsonData); 

,並更改jsonData是單純的內部內容功能。

+1

是的,這聽起來像一個方法。你應該能夠很輕鬆地去掉'function(e){'和trailing'}'以便這樣做,或者改變你的JSON字符串以使它們不在第一位? –

+0

(Function(e){})(「this is e as」); ... –

回答

相關問題