mirror of
https://github.com/KieSun/all-of-frontend.git
synced 2024-11-11 17:38:13 +08:00
739 B
739 B
let length = 10
function fn() {
console.log(this.length);
}
let obj = {
length: 5,
method(fn) {
// 两次调用各输出什么
fn()
arguments[0](0)
}
}
obj.method(fn, 1)
这道题目核心是在考 this
的指向,但是还有一些别的坑。
执行第一次 fn
的时候,这时候的 this
就是 window
,但是 window.length
并不是指向用 let
声明的 length
上的,而是「返回当前窗口中包含的框架数量(框架包括frame和iframe两种元素)」,具体可以参考 文档。
执行第二次 fn
的时候,此时 this
为 arguments
,arguments.length
为实参的长度,也就是 2。