从这个或自我引用javascript获取var名称

时间:2011-10-22 08:08:11

标签: javascript

我看到其他一些问题似乎与类似话题有关,但没有一个问题可以帮助我解决我的特定问题。我在JavaScript中使用setTimeoutsetInterval函数构建了一个线程库。这是非常好的,除了我的线程库要求线程的名称过去到线程,即当我实例化线程时它看起来像这样。

t = new Thread(payload, "t") 

payload是一个对象,它定义了线程在有机会执行时将执行的操作。这允许我从底层线程“plumbing”中抽象出线程的任务。无论如何我的问题是我必须传递线程的名称,因为setTimeoutsetInterval将JavaScript命令作为字符串,即setTimeout("doStuff", 0)。当我在更多应用程序中使用我的线程库时,将名称传递给线程变得更加痛苦。所以我希望能够通过从线程类中获取线程的名称来避免这种情况:

var myThreadName = this.someMagicFunction(); 

var myThreadName = someMagicFunction(this); 

或其他一些奇妙的方法,如果有人对我有任何想法,我将非常感激。

2 个答案:

答案 0 :(得分:3)

实际上,两者都可以将函数作为第一个参数,这是建议的用法(因为字符串版本执行eval)。

setTimeout(doStuff, 0);

在您的情况下,您可以执行以下操作:

setTimeout(function(){
  t.payload();
}, 0);

取决于Thread对象的外观。

请参阅MDC文档(setTimeoutsetInterval)。

答案 1 :(得分:0)

只要它是无参数的,你就可以将函数传递给setTimeout,即

function takeme()
{
    alert('workin?');
}

setTimeout(takeme, 100);

如果不是,那么你可以尝试

function takeme(x)
{
    alert(x);
}
var test = 1;
setTimeout(function(){ takeme(test); }, 100);

但如果您确实需要提取函数名称,请参阅this post。不完全相同,但有些相关。