为了账号安全,请及时绑定邮箱和手机立即绑定

一道关于this指向的问题

一道关于this指向的问题

米琪卡哇伊 2019-03-11 17:23:17
题目如下:var length = 10;function fn() {    console.log(this.length)};var obj = {    length: 5,     method: function (fn) {        fn();        arguments[0]();        fn.call(obj, 12);    }};obj.method(fn, 1);我的解读如下:obj.method(fn, 1); 这一段其实是method作为obj的方法调用,this隐式绑定到obj上。执行的是{    // 此次调用的this指向obj,arguments为function () { console.log(this.length) }, 1    fn();    arguments[0]();    fn.call(obj, 12);}这三条语句。第一个fn是打印出this.length,以我的理解,this在调用时确定指向,在method函数内这里的this隐式绑定到obj上,结果是打印出5;第二条语句其实还是fn,但是this绑定谁我不知道,所以结果我也不知道;第三条语句的this绑定给obj,后面的12是fn的参数没有用,所以打印出5;结果我的分析只有最后一个答案是正确的,求解惑。
查看完整描述

3 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

第一个fn是作为函数来调用的,他的this为window
第二个this是function(fn){}的arguments对象,具有arguments具有是具有length的伪数组,这是为什么是输出是2呢,是因为obj.metnod(fn,1) 你传入了2个参数.
第三个是this 指向 obj

查看完整回答
反对 回复 2019-03-15
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

以前我刚学js的时候在慕课网上,老师就说this的问题。
this就是函数作为方法被调用时,所处的对象。
不知道理解有误没。

查看完整回答
反对 回复 2019-03-15
  • 3 回答
  • 0 关注
  • 617 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信