引用类型 ( 对象定义 )——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);
-
-