JavaScript函数

在JavaScript中,函数本身与其他任何的内助对象在地位上是没有区别的,函数本身也是对象。

在JavaScript中:

函数可以被赋值给一个变量

可以被赋值为对象的属性

可以作为参数被传入别的函数

可以作为函数的结果被返回

可以用字面量来创建

1.函数对象

通过new 操作符来创建

var add=new Function("x","y","return(x+y)");


通过字面量来创建

function add(x,y){

  return x+y;

}

var add=function(x,y){

return x+y;

}


2. 函数的参数

在JavaScript中,函数的参数是比较有意思的,比如,你可以将任意多的参数传递给一个函数,即使这个函数声明时并未制定形式参数,比如:


function adPrint(str,len,option){

  var s=str ||"default";

   var l=len ||s.length;

   var o=option  || "i";

  s=s.substring(0,1);

switch(o){

    switch(o)  {

    case "u":

         s=s.toUpperCase();

         break;

    case "1":

         s=s.toUpperCase();

         break;

      default:

        break;

      }

     print(s);

}


}


adprint("hello,world");

adprint("hello,world",5);

adprint("hello,world",5,"1");  //lower case

adprint("hello,world",5,"u");  //upper case

函数adPrint在声明时接受三个形式参数:要打印的串,要打印的长度,是否转换为大小写的标记。但是在调用的时候,我们可以按顺序传递给adrint一个参数,

两个参数,或者三个参数


3.函数上下文

在JavaScript中,函数也是一种对象,并非其他任何对象的一部分。函数的上下文是可以变化的,因此,函数内的

this也是可以变化的,函数可以作为一个对象的方法,也可以同时作为另一个对象的方法,总之,函数本身是独立的。

可以通过Function对象上的call或者apply函数来修改函数的上下文:

4.call和apply

call 和apply通常用来修改函数的上下文,函数中的this指针将被替换为call或者apply的第一个参数。


//定义一个人,名字为jack

var jack ={

                name:"jack"'

                 age:26

                 }

//定义另一个人,名字为abruzzi

 var abruzzi ={

                  name:"abruzzi",

                  age:26

            }

//定义一个全局的函数

function printName(){

                    return this.name;

}

.//设置printName的上下文为jack,此时的this为jack

print(printName.call(jack));

//设置printName的上下文为abruzzi,此时的this为abruzzi

print(printName.call(abruzzi));

print(printName.apply(jack));

print(printName.apply(abruzzi));

只有一个参数的时候call和apply的使用方式是一样的,如果有多个参数:

apply的第二个参数为一个函数需要的参数组成的一个数组,而call则需要跟若干个参数,参数之间以逗号隔开即可





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章