美文网首页JavaScript 进阶营
二、JavaScript——this用法,理解

二、JavaScript——this用法,理解

作者: 陈程城 | 来源:发表于2019-08-12 10:43 被阅读0次

    f12 打开浏览器控制台

    一、this 概念

    当前执行代码的环境对象

    粗暴理解:this 就是个对象

    二、多种情况

    (一). 全局环境中

    在全局执行环境中(在任何函数体外部)this指向[1]全局对象。

    console.log(this)
    // window
    

    (二). 函数内部

    (划重点,划重点,划重点,划重点,划重点,划重点)

    1. 简单调用

    this指向window

    function haha(){
      console.log(this)
    }
    haha()
    // window
    
    

    个人理解

    • haha()本身就是window对象下的一个函数
    • haha()是被window这个对象调用的
    • haha()看做window.haha()
    • 所以用2.作为对象的方法理解的话
    • 函数haha内部的this,指向调用haha的对象window

    2. 作为对象的方法

    • 如果这个函数是在对象的内部,并且是作为对象的方法被调用

      那么,this指向调用这个函数的对象

    var hahaObject = {
      hahaName:'l名字',
      hahaMethod:function(){
        console.log(this)
      }
    }
    hahaObject.hahaMethod() // hahaObject调用了hahaMethod这个函数
    //{hahaName: "l名字", hahaMethod: ƒ}
    
    
    • 如果对象中的函数被赋值给了一个变量

      var hahaObject = {
        hahaName:'l名字',
        hahaMethod:function(){
          console.log(this)
        }
      }
      
      var a = hahaObject.hahaMethod
      
      a()
      // window
      

    函数是个单独的值,所以函数可以在不同的环境中执行

    函数hahaMethod在栈中其实存的就是指向内存的一个地址

    这个内存存了

    函数hahaMethod赋值给了a这个变量

    a获得函数hahaMethod的地址

    a就变成了window对象下的一个函数


    GitHub

    :book:《web_knowledge_hierarchy》

    参考文章

    阮一峰——《Javascript 的 this 用法》


    1. this是个对象,对象存在里的只是一个指向内存地址

    相关文章

      网友评论

        本文标题:二、JavaScript——this用法,理解

        本文链接:https://www.haomeiwen.com/subject/guuyjctx.html