this词法

1、示例代码

<!DOCTYPE html>
<html lang="zh">

    <head>
        <meta charset="UTF-8" />
        <title>词法作用域</title>
    </head>

    <body>

        <script type="text/javascript">
            //方法一:self通过使用词法作用域和闭包
            //          var obj = {
            //              count:0,
            //              cool:function coolFn(){
            //                  var self= this;
            //                  if(self.count<1){
            //                      setTimeout(function timer(){
            //                          self.count++;
            //                          console.log(self.count);
            //                      },1000)
            //                  }
            //              }
            //          };
            //方法二:使用箭头函数
            //          var obj = {
            //              count:0,
            //              cool:function coolFn(){
            //                  if(this.count<1){
            //                      setTimeout(()=>{
            //                          this.count++;
            //                          console.log(this.count);
            //                      },1000)
            //                  }
            //              }
            //          };
            //方法三:使用bind()
            var obj = {
                count: 0,
                cool: function coolFn() {
                    if(this.count < 1) {
                        setTimeout(function timer() {
                            this.count++; //this是安全的,因为使用了bind
                            console.log(this.count);
                        }.bind(this), 1000)
                    }
                }
            };
            obj.cool();
        </script>
    </body>

</html>

2、解决this绑定问题

(1)最常用的是方法一

(2)箭头函数:不够理想,函数是匿名的;同时混淆了this绑定规则和词法作用域规则。

 

var sum = (num1, num2) => (num1 + num2);

 

var sum = (num1, num2) => {return num1 + num2;}

效果一致。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值