美文网首页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