javascript中函数的调用模式分为三种
1. 方法调用模式
一个函数是一个对象的属性,当这个函数被调用的时候,这个函数就视为这个对象的一个方法(method),例如:
var o = {};
o.whatever = function(){};
o.whatever();
这个函数就叫做方法() ,这有啥意义吗?
如果你是来自于面向对象编程的开发人员,你应该记得,方法中的this就是这个方法所属的对象。在上面这个例子中也是这么回事。
当这个函数作为一个对象的方法被调用的时候,这个对象就成为了这个函数的上下文 (function context)。
并且通过this函数作为载体存在与函数之中。
2. 构造器调用模式
3. apply / call 调用模式
4. 函数调用模式
当一个函数的调用方式不是这三种之一的时候, 我们就将这个调用模式叫做函数调用模式。这种调用模式的触发是由于函数后面加上()操作符,并且这个函数并不属于任何一个对象的一个属性(如果是属于对象的一个属性,那么这个模式就成为方法调用模式) 例如:
function ninjia(){};
ninjia();
var samurai = function(){};
samurai();
当我们以这种模式来调用函数的时候 函数的上下文(function context)是全局的上下文(global context)即windows 对象.