引用类型 ( 对象定义 )——Function 类型

本文地址:http://www.cnblogs.com/veinyin/p/7607798.html 

函数实际上是对象,也具有属性和方法,函数名实际上是指向函数对象的指针

1 function sum(num1,num2){
2     return num1 + num2;
3 }

不用圆括号时为访问函数指针,而不是函数调用,如下例,将 anotherSum 也指向 sum 所指向的函数

var anotherSum = sum;

此时若将 sum 赋值为 null, anotherSum 仍能继续访问该函数

  • Function 没有重载

    由于函数其实是指针,若存在两个相同的函数名,则后一个会将先前的函数覆盖掉

  • 函数声明与函数表达式

    • 函数声明: 解析器会率先读取函数声明,并使其在执行任何代码之前可以访问

      1 function sum(num1,num2){
      2     return num1 + num2;
      3 }
    • 函数表达式: 在解析器执行到它所在的代码行,才会真正被解释执行

      1 var sum = function(num1,num2{
      2     return num1 + num2;
      3 }
  • 作为值的函数

     1 function callFunc(func,value1,value2){
     2     return func(value1,value2);
     3 }
     4 
     5 function sum(num1,num2){
     6         return num1 + num2;
     7     }
     8 
     9 var result = callFunc(sum,10,20);
    10 
    11 alert(result);
  • 函数内部属性

    • arguments(实参个数)

      arguments 包含传入函数中的所有参数,同时还包含有一个 callee 属性,指向拥有这个 arguments 对象的函数

    • this

      this 引用的是函数据以执行的环境对象

  • 函数属性和方法

    • 每个函数均有以下两个属性

      • length

        表示函数希望接收的参数个数(形参个数)

        var num = func.length;
      • prototype

        所有实例方法都保存在该属性下

    • 每个函数均有以下两个方法,可用来改变 this 指向

      • apply()

        apply() 方法接收两个参数:函数运行作用域、参数数组,数组可以为 arguments 对象,也可以为 Array 实例

        apply(func,[value1,value2,value3]);
      • call()

        作用于 apply() 函数相同,仅接收参数不同,参数为函数运行作用域、参数,其中参数必须全部列出

        call(func,value1,value2,value3);
感谢您的阅读及指正,让我们一起进步。
欢迎联系我交流:veinyin@gmail.com
作者:VeinYin
博客地址:https://www.cnblogs.com/veinyin/
如需转载请注明出处。
原文地址:https://www.cnblogs.com/veinyin/p/7607798.html