js中有线程(类)变量吗

Are there thread(sort of) variables in js?

本文关键字:变量 线程 js      更新时间:2024-05-24

我不知道该怎么称呼它们,所以我将它们称为线程。我所说的线程是指当你按下一个按钮,触发一个js代码执行链时,那就是一个线程。如果你再次按下按钮,那就是来自同一个地方的新线程。所以基本上,这个执行的连续性是由任何东西从开始到结束发起的。

好的,所以我要做的是确定线程来自哪里和/或它在哪里。例如,代码可能是这样流动的:

按钮A->功能1->功能2-

或者这个:

按钮B->功能3->功能1->功能2-

它们最终都在同一个地方,所涉及的任何数据都经过至少部分相同的处理。在函数2中,我想弄清楚这个线程是从哪里来的,它是从按钮A还是B来的?还是另一个地方?

我知道的一种方法是这样做:

<input type="button" value="A" onclick="this.from = 'button A'; function1();">
function1() {
    function2();
}
function2() {
    console.log(this.from);
}

由于它在整个线程中传播,我可以将一些东西附加到它上,比如属性"from"。然而,在我的情况下,线程需要遍历一些改变这个的函数,例如

this.objectMemberFunc = function() {}.bind(this);

并且财产丢失。尽管我到处都在使用.bind(this),但我不知道它实际上是如何工作的,我只知道它引用了我在其中生成这些函数的对象实例。有东西告诉我,我可能会使用绑定来实现我的优势,那么我该如何使用它将属性附加到我的线程?

我在函数2中试图弄清楚这个线程来自哪里,它来自按钮A还是B您可以将event传递到您的函数中

document.getElementById('btnA').addEventListener('click', doSomething, false);
document.getElementById('btnB').addEventListener('click', doSomething, false);
function doSomething(e){
  alert(e.target.id)
}
<button id="btnA">Click A</button>
<button id="btnB">Click B</button>

然后你就能识别出按下了哪个按钮。

感谢