Function类型(重点)

来源:互联网 发布:数据收集平台 编辑:程序博客网 时间:2024/06/05 19:34

函数内部属性(重点)

  • 在函数内部,有两个特殊的对象:arguments和this。
  • arguments的主要用途是保存函数参数,这个对象还有一个名叫callee的属性
  • this引用的是函数据以执行的环境对象

// callName();    // console.log(callName()); //NaN    // sum()    console.log(sum2(5,2));    console.log(factorial(5));    // 函数声明    function callName(){        alert('hello');    }    function callName(val1,val2){        return val1+val2;    }    // factorial     // 与函数名紧紧耦合    // 使用arguments.callee替代函数名,消除耦合    // 无论引用函数时使用的是什么名字,都可以保证正常完成递归调用    function factorial(n){        if(n<=1){            return 1;        }else{             return n * arguments.callee (n - 1);        }    }    function sum (val1,val2){        return val1+val2;    }    function sum1 (val1,val2){        return sum.apply(this,arguments);    }    function sum2 (n1,n2){        return sum.call(this,n1,n2);    }    var sum = function (val1,val2){        return val1+val2;    }    console.log(sum(1,2));

函数属性和方法(重点)

  • ECMAScript中函数是对象,因此也有属性和方法。
  • 每个函数都包含两个属性:length和prototype
  • 其中,length表示函数希望接收的命名参数的个数;
  • 对于ECMAScript中的引用类型来说,prototype是保存他们所有实例方法的真正所在。
  • 在ECMAScript 5中,prototype属性是不可枚举的,因此使用for-in无法发现。
  • 每个函数都包含两个非继承而来的方法:apply()和call()
  • ECMAScript 5还定义了一个方法:bind()

window.color = "red";    var o = { color: "blue" };    function sayColor() {        console.log(this.color);    }    // sayColor();    // sayColor.call(this);    // sayColor.call(o);    // sayColor.call(this.o);    // this值会被绑定到传给bind() 函数的值    var othis = sayColor.bind(o);    othis();    console.log(typeof(othis)) //function
原创粉丝点击