mirror of
https://github.com/KieSun/all-of-frontend.git
synced 2024-11-22 23:08:14 +08:00
feat: 16 答案
This commit is contained in:
parent
4b6c37b7d2
commit
a0bc35d21a
21
Answer/11-20/16.md
Normal file
21
Answer/11-20/16.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
```js
|
||||||
|
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两种元素)」,具体可以参考 [文档](https://developer.mozilla.org/zh-CN/docs/Web/API/Window/length)。
|
||||||
|
|
||||||
|
执行第二次 `fn` 的时候,此时 `this` 为 `arguments`,`arguments.length` 为实参的长度,也就是 2。
|
Loading…
Reference in New Issue
Block a user