首页 > 编程语言 >JavaScript的this指向详解

JavaScript的this指向详解

时间:2023-02-02 14:55:45浏览次数:48  
标签:function console log 指向 函数 JavaScript 详解 上下文 name

一、概念:

  • 函数的上下文(this)由调用函数的方式决定,function是“运行时上下文”策略;

  • 函数如果不调用,则不能确定函数的上下文。

二、规则:

  • 对象打点调用它的方法函数,则函数的上下文是这个打点的对象

var name = '小红'
const people = {
    name:'小明',
    age:12,
    sayHello(){
        console.log(this.name);
    }
}
people.sayHello();// "小明"
  •  圆括号直接调用函数,则函数的上下文是window对象

var name = "老六"
function winDow(){
    let name = "铁蛋"
    console.log(this.name);
}
winDow();//老六
  • 数组(类数组对象)枚举出函数进行调用,上下文是这个数组(类数组对象)

const arr = ['a',0,'b',1,function(){console.log(this[0])}];
 arr[4]();//a
  • IIFE(自调用)中的函数,上下文是window对象

var name = "李白"
(function(){
    let name = '王麻子'
    console.log(this.name)// 李白
})()
  • 定时器、延时器调用函数,上下文是window对象

var name = "王五"
const xiaoHong = {
    name:'小栗子',
    age:18,
    fun(){
        setTimeout(function(){
            console.log(this.name)
        },1000)
    }
}
xiaoHong.fun();//王五
  • 事件处理函数的上下文,是绑定事件的DOM元素

// html部分
<p>我是狗蛋</p>
// js部分
const domP = document.querySelector('p');
domP.onclick = function(){
    console.log(this.innerText);//点击时,控制台打印:我是狗蛋
}

 

标签:function,console,log,指向,函数,JavaScript,详解,上下文,name
From: https://www.cnblogs.com/LannyChung/p/17086009.html

相关文章

  • 博奥智源,老师定位分析仪软件功能开发详解
    1.采用B/S架构设计,支持通用浏览器进行远程访问进行管理;2.采用图像识别定位分析技术,智能识别教学行为,根据预设的跟踪分析逻辑触发跟踪信号,与录播主机进行跟踪数据对接;3.......
  • 人工智能自然语言处理—PageRank算法和TextRank算法详解
    人工智能自然语言处理—PageRank算法和TextRank算法详解一、PageRank算法PageRank算法最初被用作互联网页面重要性的计算方法。它由佩奇和布林于1996年提出,并被用于谷歌搜......
  • JavaScript高级编程
    JavaScript关键字break    default    finally    instanceof    this    varvoid   ......
  • Servlet生命周期详解和Servlet3.0注解配置
    Servlet生命周期详解Servlet中的生命周期方法:1.被创建:执行int方法,只执行一次Servlet什么时候被创建?默认情况下,第一次被访问......
  • 详解结构体--C语言
    我们平时使用的C语言类型类型主要是整数类型、浮点数类型以及指针类型,你是否想过我们该如何将一串不同类型的数据整合起来,实现封装?事实上,C语言也提供给我们一些自定义类型,......
  • JavaScript 中URL构造函数
    前言URL对于我们开发人员来讲,应该是非常熟悉了。在对URL进行参数拼接时,我们一般都会直接进行字符串拼接或使用模版字符串,因为这样非常方便,但是我们这样其实会在不知不觉......
  • 数据结构-详解优先队列的二叉堆(最大堆)原理、实现和应用-C和Python
    一、堆的基础1.1优先队列和堆优先队列(PriorityQueue):特殊的“队列”,取出元素顺序是按元素优先权(关键字)大小,而非元素进入队列的先后顺序。若采用数组或链表直接实现优......
  • 【Redis】配置文件详解
    目录单位:Redis配置对大小写不敏感!包含:搭建Redis集群时,可以使用includes包含其他配置文件网络:通用GENERAL快照(RDB):持久化,在规定的时间内,执行了多少次操作则会持久化到文件.r......
  • JavaScript逻辑运算符:与(&&)和或(||)
    前置知识:在javascript的逻辑运算中,0、""、null、undefined和NaN都会判定为false,其它都为true或||用于判断运算的操作数可以是任意类型的值。操作数是布尔值时,除了两......
  • QTcpServer和QTcpSocket使用详解
    QTcpServer和QTcpSocket使用详解1、基本使用方法QTcpServer和QTcpSocket的使用是密不可分的,所以两者一块演示使用方法。QTcpServer常用信号:newConnection()信号,该信号用于处......