(六)函数

  • 函数的指针调用方式

通过指针来调用函数,毁掉函数按照调用者的约定实现函数的功能,由调用者调用。通常使用在自定义功能而由第三方去实现的场合。

  • 函数的参数

      函数的参数是函数与外界交换数据的接口。

      JS的函数参数信息由arguments对象管理。

      arguments对象代表正在执行的函数和调用它的参数。函数对象的length属性说明函数定义时指定的参数个数(形参),arguments对象的length属性说明调用函数时实际传递的参数个数(实参)。arguments对象不能显式创建,函数在被调用时由JS运行时环境创建并设定各个属性值,其中包括各个参数的值。通常使用arguments对象来验证所传递的参数是否符合函数要求。

  • 函数返回类型

返回类型分两种类型,即值类型和引用类型。值传递使用的是值传递方式,即传递数据的副本;而引用类型则是引用传递方式,即传递数据的地址。

 一般,函数返回的非对象数据都使用值返回方式。数据量比较小的时候使用值传递,数据量比较大时使用引用传递。

function get(){
    var List = new Array("Lily","Petter");
    return List;
}
var nals=get();
alert(nals);
nals=null;
alert(nals);
function get(){
  function sum(a,b){
    return a+b;
  }
  return sum;
}
var sumoftwo=get();
var total=sumoftwo(1,2);
alert(sumoftwo);
alert(total);

第一段代码中nals获取数组List的一个引用,最后等于null断开变量nals对数组对象的引用,这一操作将删除数组对象。

第二段代码中sumoftwo是这个东西

function sum(a,b){
    return a+b;
  }
  return sum;
也就是说他是一个函数。然后调用
  • 函数的分类

分为构造函数,有返回值函数和无返回值函数。构造函数与一个特定的对象联系起来。

JS是基于对象的语言而不是真正面向对象的语言。没有类的概念,完成一个类的定义只需要一个构造函数即可。

function Employee(name,sex,adr){
    this.name=name;
    this.sex=sex;
    this.adr=adr;
    this.getName=getName;//方法:取得雇员姓名
}
function getName(){
    return this.name;
}
var e = new Employee("sunsir","男","贵州贵阳");
var n=e.getName();
alert(n);

 

有返回值的函数

function mul(arg1,arg2){
    return arg1*arg2;
}
  • 函数的作用域

每一个函数在执行时都处于一个特定的运行上下文中,该上下文决定了函数可以直接访问到的变量,那些变量所处的范围称为该函数的作用域。

 

 公有函数和私有函数。

一般定义的都为公有函数。当函数嵌套定义时,子级函数就是父级函数私有函数,外界不能调用私有函数。

  • this关键字

 this关键字引用运行上下文中的当前对象,JS的函数调用通常发生于某一个对象的上下文中。如果尚未指定当前对象,则调用函数的默认当前对象时Global,使用call方法可以改变当前对象为指定的对象。

var chair="公园的椅子";//公物,谁都可以用
function TomHome(){
  this.chair="汤姆家的椅子";//汤姆家的椅子
}
function useChair(){
  alert(this.chair);//输出当前椅子的信息
}
var th=new TomHome();//定义一个新家

useChair();//当前的场景是公园,其属于Global对象的属性
useChair.call(th);//指定当前场景为新家,汤姆家,于是this就是指新生成的汤姆家

 

posted @ 2015-05-05 23:09  左魅颜  阅读(202)  评论(0编辑  收藏  举报