我如何创建一个传递变量的函数,稍后我可以将其寻址到
How can I create a function that passes a variable which I can later address to
类似的执行在javascript addEventListener('event', function(e){});
我试图理解的是,如何在 "e" 变量包含一个对象的情况下创建类似的结果。
到此我有了一些了解,对吗?
var some = function (node, func) {
func(node);
}
节点是我尝试实现的变量
e
变量是关键字event
的缩写。这作为最后一个参数传递给通过 addEventListener
调用的每个函数。 e
是一个事件对象,它包含对触发事件类型和事件父级(以及许多其他事件特定属性)的引用。
但这不是你的问题。你问是否可以将对象传递给函数:
var some = function (node, func) {
func(node);
}
简而言之,是的。在您的示例中,函数 some
有两个参数。第一个可以是任何东西:字符串、数字、函数、元素(节点)等。第二个参数需要是一个函数对象。由于您尝试在 some
函数中调用。然后将 node
对象传递给该函数。
此外,JavaScript 中的所有内容都是对象。
工作示例:
some = function(node, func)
{
if (typeof(func) != undefined && {}.toString.call(func) === '[object Function]') //test if object exists and is a function.
{
return func.bind(node);
}
}
function alertIt(node)
{
alert(node.textContent);
}
//event setter
document.querySelector("button").addEventListener("click", some(document.querySelector("div"), alertIt), false);
<div>Hello world!</div>
<button>Click to activate</button>
类似的执行在javascript addEventListener('event', function(e){}); 我试图理解的是,如何在 "e" 变量包含一个对象的情况下创建类似的结果。 到此我有了一些了解,对吗?
var some = function (node, func) {
func(node);
}
节点是我尝试实现的变量
e
变量是关键字event
的缩写。这作为最后一个参数传递给通过 addEventListener
调用的每个函数。 e
是一个事件对象,它包含对触发事件类型和事件父级(以及许多其他事件特定属性)的引用。
但这不是你的问题。你问是否可以将对象传递给函数:
var some = function (node, func) {
func(node);
}
简而言之,是的。在您的示例中,函数 some
有两个参数。第一个可以是任何东西:字符串、数字、函数、元素(节点)等。第二个参数需要是一个函数对象。由于您尝试在 some
函数中调用。然后将 node
对象传递给该函数。
此外,JavaScript 中的所有内容都是对象。
工作示例:
some = function(node, func)
{
if (typeof(func) != undefined && {}.toString.call(func) === '[object Function]') //test if object exists and is a function.
{
return func.bind(node);
}
}
function alertIt(node)
{
alert(node.textContent);
}
//event setter
document.querySelector("button").addEventListener("click", some(document.querySelector("div"), alertIt), false);
<div>Hello world!</div>
<button>Click to activate</button>