【长文总结】关于this指向的一点总结(含react中this绑定)

1.构造函数形参是函数,内部代码会调用该函数时,调用的时候this指向

根据promise的excutor得到的疑问,进行验证,初次手写promise的时候会出现,回调函数的this指向window的情况,要在promise内部把this用self暂存,所以出现下面的验证

let p1 = new Promise((resolve, reject) => {
   
            setTimeout(() => {
   
                resolve('1')
            }, 1000);
        })

问题描述:

1.构造函数的形参是一个函数表达式
(如–>function GOUZAO(function(){**}){
xxxxx

};

2.构造函数内部代码,会对该形参的函数进行调用;
3.new这个构造函数的实例时,会跑一遍构造函数内部代码,此时会调用到形参的函数,问题是此时该函数的this是谁,换言之,谁调用的形参函数

例子如下:

        function Funx (funx){
   
            this.shuxing = '我是标志'
            funx()
            this.end = 'jiesu'
        }
        const f = new Funx(function(){
   
            console.log('nihao');
        })

调试如下,初次进入new Funx还未到funx()的时候,this指向的是Funx
在这里插入图片描述
运行funx()时,this指向了window
在这里插入图片描述
运行完后跑this.end时又回到Funx内部,this再次指向Funx

可见,这种情况下形参函数时由window调用的,是否可以理解为创建实例对象的操作是由外部的哪个对象执行,此时的函数调用就由谁执行?

this指向Funx的时候,Funx是构造函数对象,但是如果把函数写成性质,放进Funx中,再实例后由实例对象进行使用,按理说此时this应该是实例对象funx,下面进行验证,funx是Funx类型
在这里插入图片描述

  • 所以顺序应该是,在new实例对象时,在没有跑完new里面的代码之前,此时的this是指向的实例对象;
  • 如果里面的代码出现了运行形参函数的情况,该函数会被外部所包裹的对象调用,比如此时就是window;
  • 函数运行完后,回到创建实例对象的代码中,this重新指向构造函数;
  • 实例对象构造完成后,this重新指向实例对象,当调用实例对象下的某个属性时(该属性为函数),this指向这个实例对象,类型就是构造函数的类型

以下情况:
1.运行neibuf时this时包含neibuf的那个对象,即ff.limian,对应了上述总结的第二点—>该函数会被外部所包裹的对象调用

        function F(){
   
            this.limian = {
   
                neibuf:function(){
   
                    console.log(this);
                }
            }
        }
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值