在函数内部,有两个特殊的对象:argumengs和this

1、函数的参数

ECMAScript函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,也就是说:你定义的函数只接收2个参数,在调用这个函数时也未必一定要传递2个参数,可以传递一个、三个甚至不传递参数,之所以会这样,是因为ECMAScript中的参数在内部是用一个数组来表示的。函数接收到的永远是这个数组,而不关心数组中包含哪些参数。在函数体内的话可以通过argumengs对象来访问这个参数数组,从而获取传递给函数的每一个参数。

1、arguments

   arguments对象只是与数组类似,它并不是arry的实例,因为可以使用方括号语法来访问他的每一个元素。使用length属性来确定传进来多少个参数,arguments的值永远与对应命名参数保持同步,且没有传递值得命名参数会自动赋予undefined值

var sum = function(sum1,sum2){
            alert(arguments.length)
        }
        sum("string")        //1
        sum()                //0
        sum("1","2","3")     //3

 calle

虽然artguments的主要用途是保存函数参数,但这个对象还有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数  注:当函数在严格模式下运行时,访问arguments.callee会导致错误

var sum = function(sum1,sum2){
            console.log(arguments.callee)
        }
        sum("string")        //function(sum1,sum2){
                                    //console.log(arguments.callee)
                            //}

2、this

this指向执行这个函数的对象

window.color = "red";
        var o = {color:"blue"};
        function saycolor(){
            alert(this.color);
        }
        saycolor();      //red

        o.saycolor = saycolor;
        o.saycolor();    //blue
 

 

posted on 2017-01-04 14:47  floated  阅读(171)  评论(0)    收藏  举报