javascript中this的四种用法

yizhihongxing

当我们使用JavaScript进行编程时,经常会使用到this关键字。this的含义在不同的情况下有不同的用法。下面将详细讲解Javascript中this的四种用法。

1. 默认绑定

默认绑定是指当我们调用一个函数时,如果该函数中使用了this,而且该函数没有使用任何上下文绑定的方法,那么this的值就是全局对象(在浏览器中就是window对象)。

以下是一个示例代码:

function sayHi() {
  console.log(this.name);
}

var name = "globalName";
var obj1 = {
  name: "object1Name",
  sayHi: sayHi
}

var obj2 = {
  name: "object2Name"
}

sayHi(); // "globalName"
obj1.sayHi(); // "object1Name"
obj1.sayHi.call(obj2); // "object2Name"

在上面的sayHi函数中,没有使用任何上下文绑定的方法,因此在执行函数时,this的值就是默认绑定的值,即全局对象(window)。在调用obj1.sayHi()时,this的值就是obj1,因为函数被一个对象所调用,对象就是上下文,函数的执行上下文被绑定到了该对象上。在调用obj1.sayHi.call(obj2)时,虽然调用了obj1中的sayHi方法,但是使用了call方法将上下文绑定到了obj2上,因此this的值就是obj2

2. 隐式绑定

隐式绑定是指当一个函数被一个对象所调用时,函数中的this关键字将被绑定到该对象。下面是一个示例代码:

var person = {
  name: "Tom",
  sayHi: function() {
    console.log("Hi, my name is " + this.name);
  }
}
person.sayHi(); // "Hi, my name is Tom"

在上面的代码中,调用person.sayHi()时,this的值被绑定到了person对象,因为sayHi函数是由person对象来调用的。

3. 显示绑定

显示绑定是指我们使用callapply或者bind方法来明确指定this关键字的值。下面是一个示例代码:

function sayHi() {
  console.log("Hi, my name is " + this.name);
}

var person1 = {
  name: "Tom",
}

var person2 = {
  name: "Jerry",
}

sayHi.call(person1); // "Hi, my name is Tom"
sayHi.apply(person2); // "Hi, my name is Jerry"
sayHi.bind(person1)(); // "Hi, my name is Tom"

在上面的代码中,我们使用了callapplybind方法将sayHi函数的上下文绑定到person1person2对象上。使用callapply方法,可以直接传递参数给函数,而使用bind方法则需要在后面加()来进行调用。

4. new绑定

当我们使用new关键字来创建一个对象的实例时,this关键字会被绑定到新创建的对象实例上。以下是一个示例代码:

function Person(name, age) {
  this.name = name;
  this.age = age;
  this.sayHi = function() {
    console.log("Hi, my name is " + this.name + ", I'm " + this.age + " years old.");
  }
}

var person1 = new Person("Tom", 18);
var person2 = new Person("Jerry", 20);

person1.sayHi(); // "Hi, my name is Tom, I'm 18 years old."
person2.sayHi(); // "Hi, my name is Jerry, I'm 20 years old."

在代码中,我们使用new关键字来创建了两个Person对象的实例,this关键字被绑定到了这两个新创建的对象实例上。因此,在调用sayHi方法时,this的值就是这两个对象实例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript中this的四种用法 - Python技术站

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

相关文章

  • JS字符串常用操作方法实例小结

    那我来为你详细讲解一下“JS字符串常用操作方法实例小结”的完整攻略。 概述 在JavaScript中,字符串是一个常用的数据类型,常常用于存储和处理文本信息。在处理字符串时,有许多常用的操作方法,如截取字符串、查找子串、替换字符串等,本文将对这些方法进行详细的介绍和实例展示。 字符串基本操作方法 1. 获取字符串长度 方法: length 作用: 获取字符串…

    JavaScript 2023年5月28日
    00
  • javaScript 实现重复输出给定的字符串的常用方法小结

    让我详细讲解一下“javaScript 实现重复输出给定的字符串的常用方法小结”: 标题 1.使用字符串的repeat方法 repeat() 方法返回一个新字符串,表示将原字符串重复 n 次。 let str = ‘hello’; let newStr = str.repeat(3); console.log(newStr); //’hellohellohe…

    JavaScript 2023年5月28日
    00
  • 事件绑定之小测试 onclick && addEventListener

    事件绑定是 Web 开发中常用的技术。在 JavaScript 中,有多种方法可以实现事件绑定,其中包括 onclick 和 addEventListener。本文将介绍 onclick 和 addEventListener 的使用方法以及他们之间的区别,同时提供了两个示例,以帮助读者更好地理解事件绑定。 onclick onclick 是 JavaScri…

    JavaScript 2023年6月11日
    00
  • 如何提示用户打开Cookie?

    下面我就来详细讲解如何提示用户打开Cookie。 如何提示用户打开Cookie 在网站开发过程中,我们有时需要使用Cookie来存储用户信息、记住用户的偏好设置等等,但是有些用户的浏览器可能默认禁用了Cookie,这就需要我们提示用户打开Cookie,这些提示可以包括以下几个步骤: 步骤一:检测Cookie是否被禁用 我们可以使用JavaScript判断浏览…

    JavaScript 2023年6月11日
    00
  • JavaScript实现简单计算器小程序

    下面是详细讲解 “JavaScript实现简单计算器小程序” 的完整攻略: 介绍 计算器小程序是一种非常常见的小型应用程序,它可以用来进行简单的算术计算。使用 JavaScript 编写一个计算器小程序的过程,可以通过不同的方法来完成,但本次教程讲解的是最基本的方法,以便初学者学习。 步骤 以下是一个基本的步骤来创建 JavaScript 计算器小程序: 步…

    JavaScript 2023年5月27日
    00
  • JavaScript基础语法、dom操作树及document对象

    JavaScript是一种脚本语言,可以使网页变得更动态和交互性。要学好JavaScript,需要掌握其基础语法、dom操作树及document对象。以下是详细的攻略: JavaScript基础语法 JavaScript注重代码的可读性和清晰度。在学习JavaScript的基础语法时,需要注意以下内容: 注释 在代码中添加注释,可以让其他人更易于理解你的代码…

    JavaScript 2023年5月27日
    00
  • 一文读懂JS中的var/let/const和暂时性死区

    一文读懂JS中的var/let/const和暂时性死区 在 JavaScript 中,变量声明语句有三种:var、let 和 const。除此之外,ES6 引入了新的概念——暂时性死区。 var var 是 ES5 中引入的声明变量的关键字,它的作用域是函数作用域或全局作用域。使用 var 声明的变量可以在函数内部或全局范围内访问(也可以在任意位置声明,在函…

    JavaScript 2023年6月10日
    00
  • 详解Javascript ES6中的箭头函数(Arrow Functions)

    我可以为您详细讲解一下Javascript ES6中的箭头函数。 什么是箭头函数? 箭头函数,也被称为lambda函数,是ES6新引入的一种函数定义方式,使用 => 来定义函数,相比传统的函数定义有着更为简洁的语法。箭头函数语法如下所示: (param1, param2, …, paramN) => { statements } 其中,参数列…

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