函数的属性、方法和构造函数

函数也是对象。

属性:arguments.length表示实际传入的实参个数,arguments.callee.length表示期望传入的实参个数,eg:

    function check(args){

      var actual = args.length;

      var expected = args.callee.length;

      if(actual !== expected) {

        throw Error("实参个数和期望参数个数不一致");

      }

    }

    function f(x,y,z){

      check(arguments);//检查

    }

 

方法:call和apply方法,其作用基本相同,都可以用来代替另一个对象调用一个方法。其实就是更改对象的内部指针,即改变对象(包括函数)的this指向的内容。

    对于apply和call两者在作用上是相同的,但两者在参数上有区别的。call([thisObj[,arg1[, arg2[, [,.argN]]]]])   apply([thisObj[,argArray]]) call函数和apply方法的第一个参数都是要传入给当前对象的对象,及函数内部的this。

 

   bind方法,作用是将函数绑定至某个对象。但bind是ECMAScript5新增的方法。

   

function bind(f,o){
  if(f.bind) {
    return f.bind(o);
  }
  else return function() {
    return f.apply(o,arguments);          
  }      
}

 

posted @ 2016-03-14 18:36  Rella  阅读(300)  评论(0编辑  收藏  举报