首页 > 其他分享 >前端this的几种指向示例

前端this的几种指向示例

时间:2024-11-27 22:43:40浏览次数:7  
标签:function console log 指向 示例 前端 const name

// 1. 普通函数中的this
function normalFunction() {
    console.log('普通函数this指向:', this);
}
// 在非严格模式下,this指向window
normalFunction(); // window
// 严格模式下,this指向undefined
('use strict');
normalFunction(); // undefined

// 2. 对象方法中的this
const obj = {
    name: '张三',
    sayHi() {
        console.log('对象方法中this指向:', this);
        console.log('你好,我是', this.name);
    }
};
obj.sayHi(); // this指向obj对象

// 3. 箭头函数中的this
const person = {
    name: '李四',
    friends: ['王五', '赵六'],
    sayHiToFriends() {
        // 箭头函数继承外层函数的this
        this.friends.forEach((friend) => {
            console.log(`${this.name}向${friend}打招呼`);
        });
    }
};
person.sayHiToFriends();

// 4. 构造函数中的this
function Person(name) {
    this.name = name;
    this.sayName = function () {
        console.log('我的名字是:', this.name);
    };
}
const person1 = new Person('小明');
person1.sayName(); // this指向新创建的实例

// 5. call/apply/bind改变this指向
const teacher = {
    name: '老师',
    teach: function () {
        console.log(`${this.name}正在教课`);
    }
};

const student = {
    name: '学生'
};

teacher.teach.call(student); // "学生正在教课"

// 6. DOM事件处理函数中的this
/*
document.getElementById('myButton').addEventListener('click', function() {
  console.log('事件处理函数中的this:', this); // this指向触发事件的元素
});
*/

// 7. Class中的this
class MyClass {
    constructor(name) {
        this.name = name;
    }

    regularMethod() {
        console.log('普通方法中的this:', this.name);
    }

    arrowMethod = () => {
        console.log('箭头方法中的this:', this.name);
    };
}

const instance = new MyClass('实例');
const method = instance.regularMethod;
method(); // this丢失,将输出undefined
instance.arrowMethod(); // 箭头函数this永远指向实例

标签:function,console,log,指向,示例,前端,const,name
From: https://www.cnblogs.com/jocongmin/p/18573255

相关文章

  • 前端html img 请求的时候header请求头带token实现参考
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><linkrel="icon"href="/favicon.ico"><metaname="viewport"content="width=device-width,initial-......
  • 前端 MutationObserver api来监听dom变化劫持获取变化信息
    MutationObserver是一个强大的API,用于监测DOM的变化。它可以监听节点的添加、删除、属性变化等操作,并在这些变化发生时执行指定的回调函数。以下是MutationObserver的基本用法和示例。1.创建MutationObserver首先,创建一个MutationObserver实例,并传入一个回调函数,该函......
  • 前端Shadow DOM 使用,Shadow DOM教程,Shadow DOM 作用
    ShadowDOM是WebComponents的一部分,允许开发者将一个元素的内部结构和样式封装在一个独立的DOM中,从而避免与外部页面的其他样式和脚本发生冲突。以下是ShadowDOM的基本概念和用法:1.基础概念封装性:ShadowDOM提供了样式和内容的封装,只有在ShadowDOM内部定义的样式......
  • 前端html自定义元素,拓展元素
    拓展基础元素功能用法is使用<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><linkrel="icon"href="/favicon.ico"><metaname="viewport"content="width=device......
  • 详解 PyTorch 中的 DataLoader:功能、实现及应用示例
    详解PyTorch中的DataLoader:功能、实现及应用示例在PyTorch框架中,Dataloader是一个非常重要的类,用于高效地加载和处理来自Dataset的数据。Dataloader允许批量加载数据,支持多线程/多进程加载,并可进行数据混洗和采样,极大地提高了模型训练的效率和灵活性。Dataloader......
  • 详解 PyTorch 中的 Dataset:功能、实现及应用示例
    详解PyTorch中的Dataset:功能、实现及应用示例在机器学习和深度学习中,Dataset类是一个抽象类,通常用于封装对于数据集的各种操作,包括访问、处理和预处理数据。Dataset为数据加载提供了一个标准的接口,使其能够以一致的方式被进一步的数据处理工具和模型训练过程使用。Da......
  • 【高性能编程】SIMD类型指令基本概念与使用示例
    一、SIMD基本概念SIMD指令即单指令多数据流(SingleInstructionMultipleData)指令,是一种能够在同一时间同步执行同一条指令,以对多个数据元素进行并行处理的技术,以下是具体介绍:原理传统的单指令单数据(SISD)架构中,CPU需要分别访问内存以获取操作数,然后逐个进行运算。而SIM......
  • 前端技术对JavaScript中DOM的学习
    DOM目录DOMDOM树结构获取DOM对象更新DOM对象插入DOM对象删除DOM对象DOM树结构根节点(RootNode):在HTML文档中,<html>元素是整个DOM树的根节点。它包含了文档的所有其他部分。元素节点(ElementNode):这些节点对应了HTML或XML文档中的标签,如<body>、<p>等。元素节点可以有子节点,包......
  • 淘宝代购系统;海外代购系统;代购程序,代购系统源码PHP前端源码介绍
    淘宝代购集运系统背景:淘宝代购集运系统,是在全球化背景下跨境电商的一个重要模式,为海外消费者提供了方便的渠道来购买中国商品。这种商业模式依托于中国庞大的电商市场和商品多样性,通过代购和集运服务,让全球用户能够享受到中国市场的丰富商品资源。(复制Taobaoapi2014获取de......
  • 前端下载文件流,设置返回值类型responseType:‘blob‘无效的问题,用了mock之后,下载不起
    参考链接:https://blog.csdn.net/weixin_46872121/article/details/135616496前言:本是一个非常简单的请求,即是下载文件。通常的做法如下:1.前端通过VueAxios向后端请求,同时在请求中设置响应体为Blob格式。2.后端相应前端的请求,同时返回Blob格式的文件给到前端(如果没有步骤1设置......