<!DOCTYPE html><html><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>
1 回答
慕无忌1623718
TA贡献1744条经验 获得超4个赞
fn的所在上下文是window,所以直接调用fn输出的是最开始定义的length为10。
通过arguments[0]()
调用的上下文其实是arguments
,也就是传入method的参数类数组对象,其长度只有1。
添加回答
举报
0/150
提交
取消