Javascript - 将函数的名称作为字符串

时间:2015-07-17 16:22:36

标签: javascript

所以我包括这样的某个库

var start = function() { ... }

var loadScript = function() {
    script      = document.createElement('script');
    script.type = 'text/javascript';
    script.src  = 'https://whatever.com/js?callback=start';
    document.body.appendChild(script)
}

window.onload = loadScript;

如您所见,我将一个名为“start”的函数设置为库的回调。麻烦的是,如果我缩小文件,该函数不再被称为start

我试过这个,但它不起作用。

    script.src  = 'https://whatever.com/js?callback=' + start.name;

如何以编程方式将函数名称添加到src属性?

修改

我正在使用Rails 4,资产在Coffeescript中,所以我认为我不能使用命名函数声明。

2 个答案:

答案 0 :(得分:1)

大多数minifiers不会崩溃全局指针。所以如果你有window.start(虽然不是超级推荐那么多的通用全局名称)。

或者,为了证明这一点,window.MyAPP.Myutil.start

要记住的另一件事是匿名函数没有name属性,即使您已将其分配给变量。您需要将其添加到函数声明中。

window.start = function start() {
  // stuff
}

答案 1 :(得分:0)

你可以这样做,它可以与任何minifier一起使用。

var start = function() { ... }
var someObj = {'start': start};

然后使用someObj['start']()调用您的启动功能。