前端开发工程师吧 关注:32贴子:149
  • 3回复贴,共1

函数的arguments对象和this对象的深入理解

只看楼主收藏回复

函数有两个特殊对象,arguments和this,
arguments是一个包含着所有传入函数中的参数的类数组对象,
例如
function test1(a,b){
alert(a + b);
}
function test2(a,b){
alert(arguments[0]+arguments[1]);
}
test1和test2的结构是一样的


IP属地:上海1楼2014-04-03 08:55回复
    arguments有一个特殊的callee属性,该属性是一个指针,指向拥有这个arguments对象的函数。
    例如:阶乘函数我们还可以这样写,避免与函数名的耦合。
    function factorial(num){
    if(num<=1){
    return 1;
    }else
    {
    return num*arguments.callee(num-1);
    }
    }


    IP属地:上海2楼2014-04-03 09:02
    回复
      2025-05-28 18:24:39
      广告
      this是函数在执行是所处的作用域。
      例如:
      window.color = "red";
      var o = { color:"blue" };
      function sayColor(){
      alert(this.color);
      }
      sayColor();//"red"
      o.sayColor = sayColor;
      o.sayColor();//"blue"


      IP属地:上海3楼2014-04-03 09:30
      回复
        函数的名字仅仅是一个包含指针的变量而已,即使在不同环境中执行,全局的sayColor()函数与o.sayColor()指向的仍然是同一个函数。


        IP属地:上海4楼2014-04-03 10:47
        回复