原生javascript中this几种常见用法总结

当在JavaScript中使用this关键字时,它的值取决于该函数如何被调用。下面总结了几种常见的this用法。

全局上下文中的this

在全局作用域中使用this,this的值是指向全局对象,这在浏览器中通常是window对象。例如:

console.log(this === window); // true

函数上下文中的this

在函数作用域中使用this,this的值取决于函数的调用方式。如果使用函数名称调用函数,则this指向全局对象,如果使用点符号(对象方法)或通过call或apply调用函数,则this指向调用该函数的对象。例如:

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

example(); // Window

var obj = {
  method: example
};

obj.method(); // obj

使用call和apply方法可以显式地设置this的值。例如:

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

example.call({ name: 'John' }); // { name: 'John' }

example.apply({ age: 25 }); // { age: 25 }

构造函数中的this

在使用构造函数创建对象时,this通常是指向要创建的新对象。例如:

function Person(name) {
  this.name = name;
}

var person1 = new Person('John');
console.log(person1.name); // John

事件监听器中的this

当在事件监听器中使用this时,this指向触发该事件的元素。例如:

var button = document.querySelector('button');

button.addEventListener('click', function() {
  console.log(this); // <button>元素
});

总之,在JavaScript中使用this时需要注意如何调用函数和使用它的上下文,否则this的值可能会产生意外结果。

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

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

相关文章

  • js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版

    关于 js 中 top、clientTop、scrollTop、offsetTop 四个属性的区别,我们可以这样来理解: top 对于 Window 对象和 Frame 对象,top 属性返回当前窗口的最顶层的父级窗口,如果当前对象已经是最顶层窗口,该属性则返回这个对象本身。 对于 HTML 元素,如果元素的 position 属性值为 ‘static’(默…

    JavaScript 2023年6月11日
    00
  • JavaScript本地储存:localStorage、sessionStorage、cookie的使用

    JavaScript本地储存:localStorage、sessionStorage、cookie的使用 什么是本地储存? 在网站开发中,需要将一些数据临时储存起来。本地储存技术就是把数据储存在客户端浏览器中,这样就可以避免跨页面、跨域、跨浏览器的问题,提高网站的性能和用户体验。本地储存技术通常包括localStorage、sessionStorage和Co…

    JavaScript 2023年6月10日
    00
  • Javascript Date toSource() 方法

    以下是关于JavaScript Date对象的toSource()方法的完整攻略,包括两个示例说明。 JavaScript Date对象的toSource()方法 JavaScript的Date对象没有toSource()方法。toSource()方法是Array、Object和Function对象的方法,用于返回一个表示对象源代码的字符串。 下面是使用对象…

    JavaScript 2023年5月11日
    00
  • 浅析JavaScript中的array数组类型系统

    下面是详细讲解“浅析JavaScript中的array数组类型系统”的完整攻略: 介绍 在JavaScript中,数组类型是最常用到的一种数据类型之一。它允许我们在一个变量中存储多个数据项,并通过索引值来访问它们。在本文中,我们将对JavaScript中的Array数组类型系统进行浅析。 声明 JavaScript中的数组可以有多种声明方式。以下是其中两种:…

    JavaScript 2023年5月27日
    00
  • JS清除IE浏览器缓存的方法

    下面是详细讲解“JS清除IE浏览器缓存的方法”的完整攻略。 1. 缓存介绍 在浏览器中,网页会被缓存到本地,从而提高网页的加载速度。但是,如果网页文件被更新了,但是浏览器本地缓存还是老的,就会让用户看到旧的网页。因此,我们需要清除IE浏览器缓存,让用户能够看到最新的网页内容。 2. 清除缓存的方法 下面是清除IE浏览器缓存的方法。 2.1 使用meta标签禁…

    JavaScript 2023年6月11日
    00
  • PHP+Ajax+JS实现多图上传

    下面我将为您详细讲解“PHP+Ajax+JS实现多图上传”的完整攻略。 总体思路 实现多图上传,我们需要通过Ajax技术将多张图片逐一传递到服务器端,再通过PHP将图片保存到指定目录中。下面是详细的步骤: 使用HMTL5的file类型的input框架,在客户端实现图片上传。 使用JavaScript遍历的方式,依次将图片上传到服务器端。 JavaScript…

    JavaScript 2023年6月11日
    00
  • JavaScript原始值与包装对象的详细介绍

    我来为你详细讲解“JavaScript原始值与包装对象的详细介绍”这个话题。 JavaScript原始值和包装对象介绍 在JavaScript中,原始值指的是不可变的基本类型数据,例如字符串、数字、布尔值等,而非原始值则是JavaScript提供的对象类型。在操作原始值时,JavaScript会自动创建一个临时的包装对象(Wrapper Object),在操…

    JavaScript 2023年6月11日
    00
  • es6 filter() 数组过滤方法总结

    标题:ES6 filter() 数组过滤方法总结 介绍:在ES6中,filter()是一个常用的数组方法,它可以根据指定的条件来过滤数组元素。本文将详细讲解ES6中的filter()方法,包括其参数和用法,同时提供两个实际的示例来帮助读者更好地理解。 正文: 参数和用法 ES6中的filter()方法接受一个回调函数作为参数,回调函数可以接受三个参数,分别是…

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