js函数调用
除了声明函数时定义的形参外,每个函数还接收两个附加的参数:this和arguments,this取决于调用的模式。
js中共有四种调用模式:
方法调用模式:函数被保存为一个对象的属性时,this被绑定到这个对象
函数调用模式:this被绑定到全局对象,宿主如window对象(这是语言设计上的错误),方法中的内部函数中的this被绑定了错误的值,不能共享该方法对象的访问权,解决方案就是在该方法内定义一个变量并赋值为this,那么内部函数就能通过变量访问到this
构造器调用模式:一个函数用new来调用,那么将创建一个隐藏连接到该函数的prototype成员的新对象,同时this被绑定到这个新对象
apply调用模式:apply方法让我们构建一个参数数组并用其去调用函数,接收两个函数,第一个是将被绑定给this的值(对象,this就指向这个值)。第二个就是一个参数数组
arguments 数组(类似一个数组的对象),函数被调用时传递给函数的参数列表,