js复习---this

this是什么?
- 任何函数本质上都是通过某个对象调用的,如果没有直接指定就是window
- 所有函数内部都有一个变量this
- 它的值是调用函数的当前对象
this的情况:
  1. 以函数形式调用时,this永远都是window
  2. 以方法的形式调用时,this是调用方法的对象
  3. 以构造函数的形式调用时,this是新创建的那个对象
  4. 使用call和apply调用时,this是指定的那个对象
  5. 箭头函数:箭头函数的this看外层是否有函数
    如果有,外层函数的this就是内部箭头函数的this
    如果没有,就是window
  6. 特殊情况:通常意义上this指针指向为最后调用它的对象。这里需要注意的一点就是如果返回值是一个对象,那么this指向的就是那个返回的对象,如果返回值不是一个对象那么this还是指向函数的实例
如何确定this的值
- p(): window
- new p() : 新创建的对象
- pp.p() :  pp
- pp.call(obj) : obj
代码
 function p(c){
           console.log("111",this);
           this.color = c;
           this.getColor = function(){
               console.log("gggg",this);
               return this.color;
           }
           this.setColor = function(c){
                console.log("sssss",this);
                this.color = c;
           }
       }
       p("red");
       let pp = new p("yello");
       pp.getColor();
       let obj = {};
       pp.setColor.call(obj,"black");
       let test = pp.setColor;
       test();

       function fun1(){
           function fun2(){
               console.log("fffff",this);
           }

           fun2();
       }
       fun1();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值