1.函数实际上是一个对象typeof functionName→function,通过instanceof判断属于哪个类。
2.函数名实际是一个指针,指向某个函数体。
3.函数内部有两个对象:arguments和this。arguments不光可以指向函数传进去的参数,并且,arguments.callee指向函数,比如函数outer,调用的时候可以写为outer(),此时就可以更改为arguments.callee();
this指的是一个执行环境,比如我们单独调用函数outer,那么此时this就是window,如果我们采用call,或者apply就可以控制函数的调用对象,即this对象,
function outer(){}
var obj = new Object();
outer.call(obj);这时this就指向的是obj。
我们可以看到两个方法apply和call,都是方法的调用,方法可以通过方法名称调用,为什么还需要call和apply。因为他们可以控制this对象。其中如果outer.call(null)或者
outer.call(undefined),那么此时则指向的是window对象。call和apply的区别在于第二个参数,apply的第二个参数只能是arguments和一个数组,而call则是一一列举的,比如
outer.call(obj,"red","blue");而apply则是outer.apply(obj,["red","blue"]);
时间: 2024-11-05 18:54:58