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

get var name from this or self reference javascript

本文关键字:获取 var javascript 自引用      更新时间:2023-09-26

我看到有一些其他的问题似乎是在一个类似的主题,但没有一个答案,将帮助我解决我的特殊问题。我在JavaScript中建立了一个线程库,围绕setTimeoutsetInterval函数。这工作得很好,除了我的线程库要求线程的名称是过去的线程,即当我实例化线程时,它看起来像这样。

t = new Thread(payload, "t") 

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

var myThreadName = this.someMagicFunction(); 

var myThreadName = someMagicFunction(this); 

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

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

setTimeout(doStuff, 0);

在您的情况下,您可以这样做:

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

取决于Thread对象的外观。

请参考MDC文档(setTimeout, setInterval)

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

function takeme()
{
    alert('workin?');
}
setTimeout(takeme, 100);

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

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

但是如果你真的需要提取一个函数名,那么请参阅这篇文章。不完全相同,但有些关联。