彻底搞懂this和arguments

2024-03-11  本文已影响0人  孟艳利

一、在你进入一个函数的时候,除了记录下你进入的地址,你还要记录一下你传给这个函数的参数是哪些。

已这个为例:

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 是隐藏的第一个参数,且一般是对象(如果不是对象,就显得很没有意义了) 

上一篇 下一篇

猜你喜欢

热点阅读