Javascript this 函数深入详解

yizhihongxing

Javascript this 函数深入详解

什么是this?

thisjavascript中一个非常重要和有用的关键字,它代表当前函数执行的上下文,在不同的函数内部指向不同的对象。需要注意的是,this 的指向并不是在定义的时候确定的,而是在运行的时候才确定的。

this 的4中绑定规则

当你在函数里使用 this 时,请先看调用该函数的方式,它式通过调用方式来决定的。

默认绑定

当函数独立使用时,它的this处在默认绑定,也就是全局绑定。例如:

function yourFunction() {
    console.log(this);
}
yourFunction();

这段代码运行的结果为 window,因为这里的 this 等同于 window

隐式绑定

当函数是作为某个对象的属性时,它的this处在隐式绑定状态。例如:

var myObj = {
  myMethod: function() {
    console.log(this);
  }
}
myObj.myMethod();

这段代码的结果为 myObj,因为这里的 this 指向了 myObj

显示绑定

使用 callapply 可以直接指定函数的 this 值。例如:

function yourFunction() {
    console.log(this);
}
yourFunction.call(myObj);

这段代码的结果为 myObj,因为使用了 call 方法将 this 值绑定到了 myObj

new 绑定

当一个函数被用作构造器时(即带有 new 关键字),它的this绑定到正在构造的新对象上。例如:

function YourFunction() {
  this.name = 'Jack';
}
var yourObj = new YourFunction();
console.log(yourObj.name);

这段代码的结果为 Jack,因为 this 在执行 YourFunction() 函数时指向了新的对象 yourObj

示例1:解释默认绑定下this的指向

function yourFunction() {
    console.log(this);
}
yourFunction();

这段代码运行的结果为 window,因为这里的 this 等同于 window。因为在全局作用域下默认会把 this 绑定到全局对象 window 上。

示例2:了解隐式绑定下this的指向

var myObj = {
  myMethod: function() {
    console.log(this);
  }
}
myObj.myMethod();

这段代码的结果为 myObj,因为这里的 this 指向了 myObj

结论

学习 this 的规则和实际应用场景需要时间,可以在代码中加入 console.log(this) 来帮助理解 this 的指向关系。在解决问题时要仔细考虑 this 的绑定方式,以避免出现意外的结果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Javascript this 函数深入详解 - Python技术站

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

相关文章

  • Javascript 汉字字节判断

    下面是关于“Javascript 汉字字节判断”的完整攻略。 1. 了解字符编码 在介绍如何判断汉字字节之前,我们需要明确什么是字符编码。字符编码是将字符映射到二进制数字的方式,是计算机存储和处理文本的基础。在Javascript中,字符串的底层编码格式是utf-16。 2. 判断汉字字节 在JS中,汉字的编码范围是 0x4e00 ~ 0x9fa5,如果是一…

    JavaScript 2023年5月19日
    00
  • 基于Docker+Selenium Grid的测试技术应用示例代码

    下面是基于Docker+Selenium Grid的测试技术应用的完整攻略。 1. 准备工作 在正式开始之前,需要进行一些准备工作: 1.1 安装Docker Docker是一个开源的容器化平台,可以快速地构建、测试和部署应用程序。因此,首先需要在本地安装Docker。 1.2 搭建Selenium Grid Selenium Grid是一个分布式测试执行环…

    JavaScript 2023年5月28日
    00
  • Next.js应用转换为TypeScript方法demo

    下面是关于将Next.js应用转换为TypeScript的完整攻略: 1. 安装TypeScript依赖 在项目根目录下,使用以下命令安装TypeScript依赖: npm install –save-dev typescript @types/react @types/node 这个命令会安装三个依赖包,其中: typescript:TypeScript…

    JavaScript 2023年6月11日
    00
  • 如何判断元素是否为HTMLElement元素

    如果要判断一个元素是否为 HTMLElement 元素,我们可以使用 JavaScript 自带的 instanceof 方法。 示例 1:使用 instanceof 方法判断元素是否为 HTMLElement 元素 // 获取 HTML 元素 const el = document.querySelector(‘div’); // 判断元素是否为 HTML…

    JavaScript 2023年6月10日
    00
  • 积累比较常用的正则表达式(例如:匹配中文、匹配html)

    Markdown格式的文本有一些基本规则。比如,使用#、##、###等#符号表示章节标题,使用*、-、+等符号表示无序列表,使用>符号表示引用等。下面,我将详细讲解“积累比较常用的正则表达式”的攻略: 1. 正则表达式基础 正则表达式是用来匹配字符串及其组成部分的一种模式化方法。正则表达式主要包括以下几个元素:1. 原义字符:表示字符本身,如a表示字母…

    JavaScript 2023年6月10日
    00
  • JavaScript基础重点(必看)

    JavaScript基础重点(必看) JavaScript是一种用于网页开发的脚本语言,广泛应用于前端开发中,熟练掌握JavaScript基础是成为一名优秀的前端开发工程师的必要条件。 本篇攻略旨在讲解JavaScript的基础重点,包括基本语法、变量、数据类型、运算符、流程控制以及函数等知识点。下面是详细的讲解。 基本语法 JavaScript中的基本语法…

    JavaScript 2023年5月17日
    00
  • JavaScript实现动画打开半透明提示层的方法

    下面是“JavaScript实现动画打开半透明提示层的方法”的完整攻略。 确定提示层的样式和HTML结构 首先,我们需要确定提示层的样式和HTML结构。提示层一般是一个半透明的背景遮罩,上面有一个包含提示信息的框。 HTML结构可以使用div来实现,样式可以使用CSS来设置,比如: .tip-wrap { position: fixed; top: 0; l…

    JavaScript 2023年6月11日
    00
  • JS 添加网页桌面快捷方式的代码详细整理

    下面是“JS 添加网页桌面快捷方式的代码详细整理”的完整攻略。 什么是网页桌面快捷方式 网页桌面快捷方式指的是在计算机桌面上创建的一个链接,可以直接打开指定网页。用户只需点击桌面图标即可快速访问网页,无需打开浏览器、输入网址等操作。 实现方式 要在网页中添加桌面快捷方式,需要使用JavaScript。下面是整个实现过程的步骤: 首先,需要判断浏览器是否支持该…

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