函数是对象,函数名是指针,一个函数可能有多个函数名字。。

function sum(num1,num2){
	return num1+num2
}

alert(sum(10,10));// 20
var otherSum = sum;// otherSum和sum指向同一个函数
sum = null;// 指针(函数名)设置成null
alert(otherSum(10,10))// 20

sum: 不带括号代表访问的函数指针

另外一种理解方式如下(把函数声明换成表达式的写法):

var num = function(){
	return num1 + num2;
}
alert(sum(10,10));// 20
var otherSum = sum;// otherSum和sum指向同一个函数
sum = null;// 指针(函数名)设置成null
alert(otherSum(10,10))// 20

这样就可以把函数看成一个变量

call、apply继承

用途:在特定的作用域中调用函数
用法:两个方法作用都是一样的,只是第二个参数不同。
call(在哪个作用域中调用函数,num1,num2,num3)
apply(在哪个作用域中调用函数,[num1,num2,num3])

window.color = "red";
var o = {color:"blue"};
function show(){
	alert(this.color);
}

show.call(window);// red
show.call(this);// red
show.call(o)// blue
// 使用apply结果一样

bind

创建一个函数的实例,this值会被绑定到传给bind()函数的值(绑定this的指向)

window.color = "red";
var o = {color:"blue"};
function show(){
	alert(this.color);
}
var s = show.bind(o);
var s1 = show;
s();// blue
s1();// red

个人学习笔记