JavaScript eval () для функции с аргументом - PullRequest
6 голосов
/ 14 октября 2010

Как мне это сделать?

function myUIEvent() {
    var iCheckFcn = "isInFavorites";
    var itemSrc = ui.item.find("img").attr("src");

    if (eval(iCheckFcn(itemSrc))) { alert("it's a favorite"); }

function isInFavorites(url) { return true; } // returns boolean

Ответы [ 3 ]

6 голосов
/ 14 октября 2010

Не используйте eval(), прежде всего.

function myUIEvent() {
  var iCheckFcn = isInFavorites;
  var itemSrc = ui.item.find("img").attr("src");

  if (iCheckFcn(itemSrc)) { alert("it's a favorite"); }
}

Функции являются объектами, и вы можете назначить ссылку на функцию любой переменной. Затем вы можете использовать эту ссылку для вызова функции.

2 голосов
/ 14 октября 2010

Лучший способ - это то, что описал Пойнти, или же вы могли бы просто сделать это:

if ( window[iCheckFcn](itemSrc) ) {
  alert("it's a favorite");
};
0 голосов
/ 02 марта 2016

Если вы находитесь в среде AngularJS, все просто:

$rootScope.calculate = function(param1,param2)
{
    console.log(param1+param2);
}

var func = '$rootScope.calculate';
eval(func)(1,2);  //---> 3
...