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

yizhihongxing

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日

相关文章

  • Base64编码加密JS代码网页版

    Base64编码是一种将二进制数据编码成可打印字符的编码方式,常用于表示数据的传输或存储。在JS代码中,经常需要对字符串进行加密或解密操作,而其中的一种方式就是使用Base64编码。 下面是 “Base64编码加密JS代码网页版” 的完整攻略: 什么是Base64编码 Base64编码是由美国政府设计的一种用于二进制数据在网络上传输的编码方式。Base64编…

    JavaScript 2023年5月19日
    00
  • JavaScript实现的GBK、UTF8字符串实际长度计算函数

    下面是JavaScript实现的GBK、UTF8字符串实际长度计算函数的完整攻略。 什么是GBK、UTF8字符串 GBK和UTF8都是字符集编码方式,主要用于表示中文字符或其他多字节字符。其中GBK的编码方式较为传统,主要用于在中文操作系统中存储和传输中文字符。而UTF8则是现代的字符编码方式,可以表示所有Unicode字符,并且可以兼容ASCII编码,因此…

    JavaScript 2023年5月28日
    00
  • JS从数组中随机取出几个数组元素的方法

    JS从数组中随机取出几个数组元素的方法可以通过Math.random()函数和splice()方法实现。以下是具体攻略: 1. Math.random()函数 Math.random()函数用于生成0到1之间的随机数,取值范围是[0, 1)。为了获取数组的随机元素,我们可以将Math.random()生成的数乘以数组的length属性,然后向下取整获得随机数…

    JavaScript 2023年5月27日
    00
  • javascript面向对象三大特征之继承实例详解

    JavaScript面向对象三大特征之继承实例详解 在JavaScript中,继承是面向对象编程的一个重要概念。继承可以方便地重用已有代码,并且可以减少代码重复。本文将解释JavaScript中继承的三种方式,并提供详细的示例说明。 继承的三种方式 在JavaScript中,继承有三种方式: 原型继承 (prototype inheritance) 构造函数…

    JavaScript 2023年5月27日
    00
  • javascript常用功能汇总

    JavaScript常用功能汇总 JavaScript (简写为JS) 是一种轻量级的编程语言。它是Web前端开发的三大基石之一(HTML、CSS、JavaScript)。本文将介绍一些常用的JavaScript功能,包括字符串操作、数组操作、函数定义等。 字符串处理 JavaScript中的字符串是用单引号或双引号括起来的文本。常用的字符串操作包括:查找子…

    JavaScript 2023年5月18日
    00
  • JavaScript实现列表分页功能特效

    下面是“JavaScript实现列表分页功能特效”的完整攻略: 一、理解列表分页功能的实现原理 在网页中使用 JavaScript 和 DOM 操作来获取并显示数据。例如使用 XMLHttpRequest 对象来获取数据,然后使用 DOM 操作将数据添加到页面中。 将获取到的数据分页处理。例如,计算需要显示的页面数,并为用户提供翻页按钮来切换不同的页面。 根…

    JavaScript 2023年6月11日
    00
  • 创建与框架无关的JavaScript插件

    创建与框架无关的JavaScript插件,需要考虑以下关键要点: 1. 避免与全局命名空间冲突 在创建插件时,应尽可能避免使用全局命名空间中已存在的变量和函数。可以通过创建一个伪命名空间,将插件中的所有变量和函数保存在其中,并确保不会与其他脚本发生冲突。 var MyPlugin = (function() { // 插件的代码放在这里… })(); 2…

    JavaScript 2023年6月11日
    00
  • 原生js实现查找/添加/删除/指定元素的class

    实现查找指定元素的class可以使用Element.classList属性,该属性是一个只读的类数组对象,可以返回元素的所有class列表。同时,该属性还包含了一些常用的方法,可以用于添加、删除、切换、是否存在等操作。 查找指定元素的class 为了查找指定元素的class,可以使用如下代码: let element = document.getElemen…

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