ECMAScript规范为所有函数都包含两个方法(这两个方法非继承而来),`call`和`apply`。这两个函数都是在特定的作用域中调用函数,能改变函数的作用域,实际上是改变函数体内`this`的值 。
### call
call(thisObj,Object)
调用一个对象的一个方法,以另一个对象替换当前对象。
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象.如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj
### apply(thisObj,[argArray])
应用某一对象的一个方法,用另一个对象替换当前对象。
如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数