JavaScript事件如何与参数一起工作?

JavaScript事件如何与参数一起工作?,javascript,events,parameters,global-variables,dom-events,Javascript,Events,Parameters,Global Variables,Dom Events,创建对象(图形组件)后,我向其添加事件处理程序,如下所示: objects[text_identifier.toUpperCase()].on('mousedown tap', function(){enableDiagrams('Textfield', text_identifier, objects[text_identifier.toUpperCase()]);}); 例如,如果我有两个对象。我有一个函数,显示单击对象的所有属性及其值。以下是其中的一部分: function enable

创建对象(图形组件)后,我向其添加事件处理程序,如下所示:

objects[text_identifier.toUpperCase()].on('mousedown tap', function(){enableDiagrams('Textfield', text_identifier, objects[text_identifier.toUpperCase()]);});
例如,如果我有两个对象。我有一个函数,显示单击对象的所有属性及其值。以下是其中的一部分:

function enableDiagrams(type, identifier, object) {
    currentType = type;
    currentIdentifier = identifier;
    ...
    document.getElementById('circle-identifier').value = currentIdentifier;
    ...
}
所以我想访问我单击的单个对象的数据。如果我单击我的第一个对象(首先创建),所有内容都会显示良好。然后我点击我的第二个对象,也很好。但是,如果我现在再次单击第一个项目,将显示来自第二个对象的数据

我必须补充一点,在我的例子中,有必要在显示属性后对对象进行深度复制。因此,每次显示后,我必须再次声明事件处理程序,如下所示:

objects[currentIdentifier.toUpperCase()].on('mousedown tap', function(){enableDiagrams(type, currentIdentifier, objects[currentIdentifier.toUpperCase()]);});
currentType
currentIdentifier
是全局变量)

所以我猜我的问题是将全局变量传递给事件函数的声明


你能解释一下它是如何工作的吗?

很难马上回答这个问题,因为我不太清楚
text\u标识符
对象代表什么等等。如果仔细观察,您正在调用回调函数中的
enableDiagrams
“mousedown tap”,但是传递给此函数的变量依赖于此回调函数之外的数据。预期的方法是利用
'mousedown tap'
事件的函数上下文,这样在
函数(obj){…}
中,您可以使用其中的
this
上下文引用被点击的对象,或者使用此函数接收的参数。这里的text\u标识符只是一个本地字符串。我想没关系。但是你能解释一下回调函数如何处理全局变量吗?我不知道从哪里开始。调用回调函数(父函数<代码>函数(){})时,将解析
enableDiagrams
函数中的参数。但是,您的实现看起来有点不稳定,因为您的
on()
事件侦听器确切地知道正在侦听哪个对象,因此如果您使用
this
关键字,您在回调函数中就有了所需的对象。您只需预先设置该对象的一些属性,就不必传递
text\u identifier.toUpperCase()
。谢谢,Flame!假设我想在本地变量中存储的
enableddiagrams
函数中传递信息,让我们将它们称为
var type='A String'
var identifier='A String'
。所以我的结果应该是这样的<代码>对象[identifier.toUpperCase()].on('mousedown-tap',函数(类型,标识符,this){enableddiagrams(类型,标识符,this);})如果我这样做,它会显示
未定义
,用于使用
标识符
参数。