请问JS中函数的执行,用apply(或call)和普通调用的区别?

function f(arg){
……………………
}
f(arg);//执行函数f
f.apply(this,arg)

f.call(this,arg)
//最近遇到一个问题就是写f(arg)他会出错,写下面那两种不出错
写f.apply(null.arg)
或者 var obj=new Object(); f.apply(obj,arg) 等都没错,反正只要传进一个域对象行了
管你传什么
不明白啊 难道f(arg)是没有作用域的吗还是怎么着?

f.apply(this,arg) this代表当前类要执行f类中的内容:
如 定义一个类:function man(sex,age){
    this.sex=sex;this.age=age;
}
那么调用man类中内容的方法如下:
apply:
function human(sex,age){
    man.apply(this,arguments);//this代表当前human类,去执行man类中的内容,arguments为sex,age参数数组
}
call:
function human(sex,age){
    man.apply(this,sex,age);//this代表当前human类,去执行man类中的内容,arguments为sex,age参数数组
}

http://www.cnblogs.com/chenjef/p/4889767.html