JavaScript函数中的this四种绑定形式

JavaScript 中的 this 指向可以按照四种绑定形式进行绑定,这四种形式分别是默认绑定、隐式绑定、显式绑定和 new 绑定。下面将分别对这四种绑定形式进行详细介绍。

默认绑定

当函数直接被调用时,且函数内部没有使用特殊的this绑定方式,this 指向就是默认绑定到全局对象上。

function printThis() {
  console.log(this);
}
printThis(); // 全局对象,浏览器环境下是 window

隐式绑定

当函数作为对象的方法被调用时,this 指向就会隐式绑定到该对象上。也就是说,this 指向调用当前方法的对象。

const person = {
  name: 'Jack',
  printThis() {
    console.log(this);
  }
};
person.printThis(); // person 对象

显式绑定

使用函数的 call 或 apply 方法调用时,可以显式指定 this 指向。通过传入 call 或 apply 方法的第一个参数设置 this 指向。

function printThis() {
  console.log(this);
}
const person = {
  name: 'Jack'
};
printThis.call(person); // person 对象

new 绑定

通过使用 new 关键字来调用函数时,this 指向会绑定到新创建的对象上。在构造函数中使用 this 时,指向的是 new 出来的实例对象。

function Person(name) {
  this.name = name;
  this.printThis = function() {
    console.log(this);
  };
}
const jack = new Person('Jack');
jack.printThis(); // jack 对象

这些绑定的形式很有用,但需要注意的是它们可能会产生一些问题。例如在默认绑定中,this 指向全局对象很容易产生副作用。在显式绑定中,很容易误用 call 或 apply 方法,从而必须谨慎使用。在隐式绑定中,当函数使用箭头函数时,this 指向可能会不符合预期。因此,在使用这些绑定的时候需要谨慎。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript函数中的this四种绑定形式 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 向fckeditor编辑器插入指定代码的方法

    关于向Fckeditor编辑器插入指定代码的方法,可以分为以下两种方式: 一、在源码视图中添加指定代码 步骤如下: 打开Fckeditor编辑器,点击源码视图按钮; 在源码视图中添加你的代码段,注意代码段必须符合HTML标准; 回到正常视图,此时你的代码段会被正确渲染出来。 以下是一个示例代码,添加了一个带有样式的Button按钮: <button s…

    JavaScript 2023年6月11日
    00
  • Javascript中的var_dump函数实现代码

    对于Javascript而言,并没有var_dump这个函数。通常情况下,我们可以使用console.log来输出变量的值和类型。 如果想要模拟PHP的var_dump函数,可以参照以下代码: function var_dump(obj) { var result = ”; for (var i in obj) { result += i + ‘: ‘ +…

    JavaScript 2023年6月11日
    00
  • JavaScript基本的输出和嵌入式写法教程

    JavaScript基本的输出和嵌入式写法教程 简介 JavaScript 是一种脚本语言,广泛应用于 Web 开发中。在这篇教程中,我们将讲解 JavaScript 的基本输出和嵌入式写法,以帮助初学者理解 JavaScript 中的语法规则。 输出 JavaScript 在 JavaScript 中,可以使用 console.log() 函数来输出内容。…

    JavaScript 2023年5月18日
    00
  • 5个javascript的数字格式化函数分享

    一、前言 本文主要介绍5个能够对JavaScript数字进行格式化的函数。这些函数可以将数字格式化成千位分隔符形式、保留指定小数位数等。在实际开发中,数字格式化功能是很有用的,因此掌握这些函数的使用方法具有一定的实际价值。 二、千位分隔符 toLocaleString() var num = 12345.67; var result = num.toLoca…

    JavaScript 2023年5月27日
    00
  • 在页面上点击任一链接时触发一个事件的代码

    要实现在页面上点击任一链接时触发一个事件的代码,可以通过以下步骤来实现: 第一步:添加一个事件监听器 在页面中添加一个事件监听器来监听所有a标签的点击事件,代码如下: document.addEventListener(‘click’, function(event) { if (event.target.tagName === ‘A’) { // 点击事件…

    JavaScript 2023年6月11日
    00
  • JavaScript获取当前url路径过程解析

    JavaScript获取当前URL路径过程解析 在 JavaScript 中获取当前页面的 URL 路径是我们常见的需求之一。下面将详细介绍在不同的情况下如何获取当前 URL 路径。 1. window.location.href 我们可以通过 window.location.href 获取当前页面的完整 URL,包括协议、主机名、端口号和路径等信息。例如:…

    JavaScript 2023年6月11日
    00
  • 移动端图片上传旋转、压缩问题的方法

    移动端图片上传旋转、压缩问题主要是由于不同设备系统、不同拍照APP对图片方向及分辨率的处理方式不同所导致的,而这些问题会影响用户的使用体验和图片加载速度,因此需要进行解决。 以下是解决移动端图片上传旋转、压缩的方法攻略: 1. 旋转问题解决 1.1 问题描述 在部分设备上,拍照得到的图片可能会因为设备方向改变而旋转90度或180度。例如,在iOS系统中,通过…

    JavaScript 2023年5月28日
    00
  • discuz中用到的javascript函数解析 原创第2/2页

    下面就是对于“discuz中用到的javascript函数解析 原创第2/2页”的完整攻略: 1. 概述 该文章介绍了 discuz 论坛中常用的 JavaScript 函数解析,主要包括 Ajax 交互、 DOM 操作以及事件处理等。 2. Ajax 交互 2.1 Ajax.call() 该函数用于发送 Ajax 请求,并接收服务器返回的 JSON 格式数…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部