From a0bc35d21acba9df157281208e4ff5ba8889529f Mon Sep 17 00:00:00 2001 From: xuwu Date: Tue, 30 Mar 2021 07:28:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=2016=20=E7=AD=94=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Answer/11-20/16.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Answer/11-20/16.md diff --git a/Answer/11-20/16.md b/Answer/11-20/16.md new file mode 100644 index 0000000..438f497 --- /dev/null +++ b/Answer/11-20/16.md @@ -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。 \ No newline at end of file