JavaScript this指向(Day15)

29 阅读1分钟

this指向

  • 解析器每次调用函数时都会向函数传递一个隐含的参数 this

  • this 指向的是一个对象,该对象称为函数执行的上下文对象

  • 根据函数调用方式的不同,this 会指向不同的对象,与创建方式无关

    • 示例

          function fun(){
              console.log(this)
          }
          var obj={
              name:'孙悟空',
              sayName:fun
          }
      
    • 以函数的形式调用时,this 指向window

      fun()
      // 结果:Window {window: Window, self: Window, document: document, name: '', location: Location, …}
      
    • 以方法的形式调用,this 指向的是调用的方法所在的对象

      obj.sayName()
      // 结果:{name: '孙悟空', sayName: ƒ}
      
  • 区别

    • 基础代码

          var name='全局'
          var obj1={
              name:'孙悟空',
              sayName:fn
          }
          var obj2={
              name:'沙僧',
              sayName:fn
          }
      
    • 不使用this

          function fn(){
              console.log(name)
          }
          fn()
          // 结果:全局
          obj1.sayName()
          // 结果:全局
          obj2.sayName() 
          // 结果:全局
      
    • 使用this

          function fn(){
              console.log(this.name)
          }
          fn()
          // 结果:全局
          obj1.sayName()
          // 结果:孙悟空
          obj2.sayName()
          // 结果:沙僧