收藏
回答

大家谁能从理论层面,讲讲为什么打印this,出来的结果不同呢?

回答关注问题邀请回答
收藏

2 个回答

  • Admin²⁰²⁰
    Admin²⁰²⁰
    03-29

    这个是箭头函数和普通函数作用域的问题

    普通函数的this是调用者

    箭头函数的this是上下文

    03-29
    有用
    回复
  • Devil
    Devil
    03-29

    1、首先,fun3和fun4的实参可以去掉了,不用放在那儿迷惑自己;

    2、fun1和fun2是对象方法的两种不同写法,fun1是简写而已,this指向和普通函数没什么区别,由调用时的作用域链决定。onLoad由page对象调用,即page.onLoad(),所以onLoad函数中,this指向page对象,而fun1和fun2由onLoad中的this调用,也指向page对象;

    3、箭头函数的this由定义时的上下文决定,并不关心是谁调用了它,去找定义时的位置即可,可以画一下作用域气泡,fun3和fun4的this指向的应该是page被定义时的上下文对象,打印的是undefined,可见微信并没有向我们暴露出来,要么是一个包含某种不想让我们看到的属性的对象,或者顶级对象。

    03-29
    有用
    回复
登录 后发表内容
问题标签