Javascript-this指向

简介: Javascript-this指向

this指向


  • 全局上下文:

在全局作用域中,即在任何函数外部,this 指向全局对象(浏览器环境中为 window 对象,Node.js 环境中为 global 对象)。

  • 函数内部:

在函数内部,this 的指向可能有所不同,取决于函数的调用方式:

作为函数调用:当函数作为普通函数调用时,this 指向全局对象(严格模式下为 undefined)。

作为对象方法调用:当函数作为对象的方法调用时,this 指向调用该方法的对象。

使用 call、apply 或 bind 方法显式绑定 this:可以使用这些方法来显式指定函数执行时的 this 指向。

  • 构造函数:

当函数被用作构造函数来创建新对象时,this 指向新创建的实例对象。

  • 事件处理函数:

在事件处理函数中,this 指向触发事件的元素。

  • 箭头函数:

箭头函数不会绑定自己的 this 值,而是继承外部作用域的 this 值。

        1. this代表所在function被哪一个对象调用了,那么这个this就代表这个对象。
        2. 如果没有明确的调用对象,则代表window
         function fn(){
             alert(this);
         }
         fn(); window  //没有明确对象,所以代表
         document.onclick = fn;  document
         var obj = {fn: fn}
         obj.fn();  obj
         'use strict';
         a = 3;
         alert(a);
        function fn(){
           'use strict';
            alert(this);  undefined
        }
        fn();


强行改变 this 指向


修改上下文中的this指向方法 (函数的方法,改变的是函数内部的this指向)


  1. call(对象,参数1,参数2,……) :返回对象后,这个函数立即运行
  2. apply(对象,数组或arguments) : 返回对象后,这个函数立即运行
  3. bind(对象,参数1,参数2,……) : 返回函数
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <input type="text" name="" id="txt">
    <div id="box"></div>
    <script>
        var div = document.querySelector('#box');
        var inp = document.querySelector('#txt');
        document.onclick = function(){
            alert(this); //document
            setTimeout(function(){
                alert(this); //window,想让this指向document
            }.bind(this), 3000); //document
        }
        function fn(){
            alert(this);
        }
        fn.call(div); // div
        fn.apply(document); //document
        fn.bind(inp)();  // input
    </script>  
</body>
</html>


目录
相关文章
|
5月前
|
前端开发 JavaScript Java
javaScript(四):函数和常用对象
JavaScript 是一种广泛用于 Web 开发的脚本语言。它可以用于为网页添加交互性和动态性,以及处理用户输入和操作页面元素等。JavaScript 是一种弱类型语言,使用动态类型,可以直接嵌入到 HTML 中。它具有流行、易学易用的特点,被广泛用于前端开发,以及后端开发中的运行时环境如 Node.js
36 1
|
6天前
|
JavaScript 前端开发
深入探索JavaScript:如何改变this的指向
深入探索JavaScript:如何改变this的指向
|
1月前
|
JavaScript 前端开发 开发者
解密JavaScript中this的指向问题
解密JavaScript中this的指向问题
159 2
|
3月前
|
JavaScript 前端开发
JavaScript中this的指向问题
JavaScript中this的指向问题
|
5月前
|
自然语言处理 JavaScript 前端开发
JavaScript中的this指向哪?
this可以说是前端开发中比较常见的一个关键字,由于其指向是在运行时才确定,所以大家在开发中判断其方向时也会很模糊,今天就把this的指向问题拆开了,揉碎了,好好讲一讲。
68 0
JavaScript中的this指向哪?
|
5月前
|
JavaScript 前端开发
JavaScript中this指向问题
JavaScript中this指向问题
21 0
|
11月前
|
存储 JavaScript 前端开发
JavaScript|数组对象
JavaScript|数组对象
69 0
|
JavaScript 前端开发
JavaScript——this的指向问题
JavaScript——this的指向问题
62 0
|
JavaScript 前端开发
JavaScript中数组的创建
在JavaScript中创建数组有两中方法,分别是利用字面量创建数组、使用构造函数创建数组。下面详细介绍则两种方法。
|
自然语言处理 JavaScript 前端开发
JavaScript 中 this 指向详解
JavaScript 中 this 指向详解
93 0