【javascript笔记】 函数内部属性以及方法

 

  js中 在函数内部 有 两个特殊的对象  arguments  和 this 

             arguments保存的是函数的参数,类数组的形式

              this 保存的当前执行环境,也可以说成web中的上下文

一,(1)先说arguments 参数 ,这个参数有个callee的属性   该属性 是一个指针 指向拥有这个arguments对象的函数

          例子:阶乘函数,

             function factorial(num){

                          return  num<=1?num*1: num*  factorial(num-1)

                    }

         这是一个最简单的递归函数  求阶乘,但是我们若想改变函数的名字,必须连声明和内部函数内容一起改变,这时候 arguments对象的属性 callee用到了

         function factorial(num){

                          return  num<=1?num*1: num*  arguments.callee(num-1)

                    }

         (2)this函数 不作记录

二,每一个函数对象还包含两个非继承而来的方法apply()和 call()方法,这两个方法的用途都是在特定的作用域中调用函数 ,实际上是设置函数体内this对象

的值。

    apply 方法 接收两个参数,第一个参数 函数运行的作用域,第二个是参数数组

    call 方法和 apply方法是一样的,只是第二个参数 传递函数参数的时候别绪逐个的列举出来 .

           例子来了:

            window.color='red';

           var o={ color:'blue};

            function sayColor(){

            alert(this.color);

           }

     

         sayColor.call(o) ;   //输出结果为blue    

         sayColor.call(window); //输出结果为red




posted on 2014-11-02 17:45  狂奔的冬瓜  阅读(158)  评论(0编辑  收藏  举报