一、在你进入一个函数的时候,除了记录下你进入的地址,你还要记录一下你传给这个函数的参数是哪些。
已这个为例:
1、重要:this 就是 call 的第一个参数!call 的其他参数统称为 arguments 如果你记住了这个规则,那么网上其他关于 this 的解释在此时都变得很啰嗦了。
2、this 是隐藏的第一个参数,且一般是对象(如果不是对象,就显得很没有意义了)
1关于函数进入的一瞬间要做的事情:
(1)、我们要记录函数当前的位置,放到callstack里面。
(2)、我们要记录下this,这个this可以传也可以不传,如果你不传this就会默认变成window浏览器上是这样的。
(3)、然后你要传下一个参数是arguments,如果你不传就是空数组。如果你传,你传什么放到arguments包装成数组。
二、为什么我要用call不用f()?
f()是阉割的f.call()。
三、this为什么必须是对象呢?
因为 this 就是函数与对象之间的羁绊
2四、call / apply
fn.call(asThis, p1,p2) 是函数的正常调用方式
当你不确定参数的个数时,就使用 apply fn.apply(asThis, params)
总结:
重要:this 就是 call 的第一个参数!call 的其他参数统称为 arguments如果你记住了这个规则,那么网上其他关于 this 的解释在此时都变得很啰嗦了。
this 是隐藏的第一个参数,且一般是对象(如果不是对象,就显得很没有意义了)
网友评论