JavaScript-自测题12

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
function fn(){
console.log(this.length);
}
var yideng = {
length: 5,
method: function(){
"use strict";
fn();
arguments[0]();
}
}
const result = yideng.method.bind(null);
result(fn,1,3);
}

运行结果:

1
2
1
3

解析:

  1. fn() this指向window this.length指向iframe为1
  2. arguments[0] 调用fn(),此时this指向arguments,this.length就是3

附加题:

1
2
3
4
5
6
7
8
9
10
{
function yideng(a,b,c){
console.log(this.length);
console.log(this.callee.length);
}
function fn(d){
arguments[0](10,20,30,40,50);
}
fn(yideng,10,20,30);
}

运行结果:

1
2
4
1

解析:

  1. fn(yideng,10,20,30) 调用yideng() this指向arguments this.length为4
  2. this.callee.length指向fn(d)为1