1.函数是对象,函数名是指针。每个函数都是Function的实例,而且与其他引用类型一样具有属性和方法。一个函数可能有多个名字
2.定义函数的三种方法:函数声明,函数表达式,使用Function构造函数(不推荐)
function sum(num1,num2)
{return num1+num2;}
或
var sum=function(num1,num2){
return num1+num2;
}
或
var sum=new Function(“sum1”,”sum2”,”return num1+num2”);
3.没有重载的概念
4.解析器会先读取函数声明,而至于函数表达式,则必须等到解析器执行到它所在的代码块,才会真正的被解释执行
5.函数名本就是变量,所有函数可以作为值来使用。可以作为函数参数或者函数的结果
6.函数内部的两个特殊对象:argument和this
argument对象的callee属性:该属性是一个指针,指向拥有这个argument对象的函数。这个在实现递归时很有用
caller属性:保存着调用当前函数的函数的引用、
7.函数属性和方法:
length属性:参数个数
prototype属性:保存着引用类型所有实例方法
apply()和call()方法:在特定的作用域内调用函数,后者传递给函数的参数必须逐个列举出来。这两个函数最大的作用就是能够扩充函数的作用域
window.color=”red”;
var o={color:”blue”};
function sayColor(){
alert(this.color);
}
sayColor();
sayColor.call(this);
sayColor.call(window);
sayColor.call(o);
bind()方法:会创建一个函数的实例,其this值会绑定到传给bind()函数的值
toLocalSting()等三种方法会返回函数的代码