日期:2014-05-16  浏览次数:20337 次

如何锁定一个函数的作用域?
貌似JS里边改变作用域的就只有call和apply方法,但是一执行call或者apply函数就立马执行了,有没有方法可以事先锁定一个函数的作用域,但是不执行函数,然后像一般的函数一样调用,而使其的作用域不变呢?在此先谢过各位了。

------解决方案--------------------
scope can
探讨
改变作用域

------解决方案--------------------
scope 属性也是决定作用域的。
------解决方案--------------------
HTML code
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type='text/javascript' src='http://code.usuishi.com//upload/1/files/jquery-1_6_4_min.js'></script>

</head>
<body>
<div id='d'></div>
<input type='button' id='b'/>
<script type='text/javascript'>

//这个函数里面就是作用域
function scope()
{
    var i = 0;
    return function()
    {
         i ++;
         document.getElementById('d').innerHTML = i;
    }
}

document.getElementById('b').onclick = scope();
</script>
</body>
</html>

------解决方案--------------------
探讨
貌似JS里边改变作用域的就只有call和apply方法,但是一执行call或者apply函数就立马执行了,有没有方法可以事先锁定一个函数的作用域,但是不执行函数,然后像一般的函数一样调用,而使其的作用域不变呢?在此先谢过各位了。

------解决方案--------------------
使用闭包,返回一个函数
探讨

HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<scri……

------解决方案--------------------
可以将scope对象存为函数的一个属性,然后调用的时候,直接.apply(xx.scope,srguments),应该就可以了