В этом примере используется назначение обработчика события onclick.
во время загрузки страницы, чтобы продемонстрировать, как создать функцию
ссылка, содержащая встроенные ссылки на локальные
значения в функции настройки.
<html>
<head>
<title>Scope passing Test</title>
<script type="text/javascript">
// Your target function
function a(p1,p2) { alert("p1="+p1+ " p2="+p2); }
function yourSetupFunction()
{
// Declare some local variables that your "a()" function cannot see to test.
var my1 ="Look Ma" ;
var my2 ="No hands" ;
// Snag a reference to the <a id="testA"></a> element
var oAelement=document.getElementById("testA");
oAelement.addEventListener( "click" ,
(function(scopePass_My1,scopePass_My2)
{
return function()
{
a(scopePass_My1,scopePass_My2)
}
})(my1,my2) ,true);
}
</script>
</head>
<body onload="yourSetupFunction()">
<a id="testA" href="#" onclick="return false;">Click to Test</a>
</body>
</html>
Настоящая магия - это всего лишь несколько строк
(function(scopePass_My1,scopePass_My2)
{
return function()
{
a(scopePass_My1,scopePass_My2)
}
})(my1,my2)
Первый набор паренов приводит к оценке содержимого для ссылки на функцию.
Второй набор паренов ... (my1, my2) ... вызывает ссылку на функцию
которая возвращает ссылку на другую функцию, которая может видеть параметры, переданные в
... scopePass_My1, scopePass_My2 ... и может передать их вашей целевой функции a (p1, p2)
Надеюсь, это поможет.