<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
var length = 10;
function fn() {
console.log(this.length);
// console.log(this);//window
}
var obj = {
length: 5,
method: function(fn) {
fn(); //10
arguments[0]();//1
}
}
obj.method(fn);
</script>
</body>
</html>
fn的所在上下文是window,所以直接调用fn输出的是最开始定义的length为10。
通过
arguments[0]()
调用的上下文其实是arguments
,也就是传入method的参数类数组对象,其长度只有1。