红色箭头标记的地方,arguments.callee不是函数自己吗?为什么会有个offset属性,为什么要进行这一层判断呢?
认证0级讲师
这个是计算元素大小的那一节内容吧?书里有说啊,不同浏览器的起点坐标不一样,所以要根据情况判断起点坐标是(0, 0)还是(2, 2);offset变量就是保存这个起点坐标的地方,根据不同情况值可能是0或-2。这个offset变量是getBoundingClientRect()这个方法专用的,把offset变量绑定在上面不就顺理成章么。这个函数的逻辑是第一次执行时先判断函数自己有没保存了offset,没的话就算一次保存起来,以后再调用就直接拿offset出来就行了。其实还可以把offset当作getBoundingClientRect()里的私有变量,这个是闭包的内容了。
offset
getBoundingClientRect()
arguments.callee代表函数本身没有错。但是,函数也可以有自己的属性,包括自定义属性。
arguments.callee
自定义
这个是计算元素大小的那一节内容吧?书里有说啊,不同浏览器的起点坐标不一样,所以要根据情况判断起点坐标是(0, 0)还是(2, 2);
offset
变量就是保存这个起点坐标的地方,根据不同情况值可能是0或-2。这个
offset
变量是getBoundingClientRect()
这个方法专用的,把offset
变量绑定在上面不就顺理成章么。这个函数的逻辑是第一次执行时先判断函数自己有没保存了offset
,没的话就算一次保存起来,以后再调用就直接拿offset
出来就行了。其实还可以把
offset
当作getBoundingClientRect()
里的私有变量,这个是闭包的内容了。arguments.callee
代表函数本身没有错。但是,函数也可以有自己的属性,包括自定义
属性。