开发者社区> 问答> 正文

谈谈 This 对象的理解。

谈谈 This 对象的理解。

展开
收起
请回答1024 2020-04-03 15:18:11 948 0
2 条回答
写回答
取消 提交回答
  • 有点尴尬唉 你要寻找的东西已经被吃掉啦!

    调用的上下文环境包括全局和局部

        全局环境就是在<script></script>里面,这里的this始终指向的是window对象,
    
        <script>
    
             console.log(<strong>this</strong>);//指向window对象
    
       </script>
    
       局部环境
    
          1)在全局作用域下直接调用函数,this指向window
    
           function func(){
    
              console.log(this) ;//this指向的还是window对象
    
            }
    
           func()
    
           2)对象函数调用,哪个对象调用就指向哪个对象
    
             
    
          3)使用 new 实例化对象,在构造函数中的this指向实例化对象。
    
             
    
          4)使用call或apply改变this的指向
    

    加分项

         1. 用于区分全局变量和局部变量,需要使用this
    
          
    
         2.返回函数当前的对象,
    
         
    
        3.将当前的对象传递到下一个函数
    
    2020-04-03 22:11:33
    赞同 展开评论 打赏
  • this 是执行上下文中的一个属性,它指向最后一次调用这个方法的对象。在实际开发中,this 的指向可以通过四种调用模
    式来判断。
    

    1.第一种是函数调用模式,当一个函数不是一个对象的属性时,直接作为函数来调用时,this 指向全局对象。

    2.第二种是方法调用模式,如果一个函数作为一个对象的方法来调用时,this 指向这个对象。

    3.第三种是构造器调用模式,如果一个函数用 new 调用时,函数执行前会新创建一个对象,this 指向这个新创建的对象。

    4.第四种是 apply 、 call 和 bind 调用模式,这三个方法都可以显示的指定调用函数的 this 指向。其中 apply 方法接收两个参数:一个是 this 绑定的对象,一个是参数数组。call 方法接收的参数,第一个是 this 绑定的对象,后面的其余参数是传入函数执行的参数。也就是说,在使用 call() 方法时,传递给函数的参数必须逐个列举出来。bind 方法通过传入一个对象,返回一个 this 绑定了传入对象的新函数。这个函数的 this 指向除了使用 new 时会被改变,其他情况下都不会改变。

    这四种方式,使用构造器调用模式的优先级最高,然后是 apply 、 call 和 bind 调用模式,然后是方法调用模式,然后
    是函数调用模式。
    
    2020-04-03 15:19:04
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
JAVA反射原理以及一些常见的应用 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载