美文网首页
更改this的指向

更改this的指向

作者: BigDipper | 来源:发表于2020-09-15 19:15 被阅读0次

首先说明一下,对于ES6新推出的箭头函数(() => {}),是无法改变this指向的,因为箭头函数中的this在函数声明的时候就已经指定好了。此处说的更改this指向,是指在函数(包括匿名函数 function() {})被调用时,可以更改this的指向

假设有如下的代码:

<body>
    <div class="box"></div>
    <script>
        const box = document.querySelector('.box');
        let a, b , c;

        const obj = {
            fn: function() {
                console.log(this);
            }
        };

        obj.fn();
    </script>
</body>

当执行obj.fn()方法时,this的指向是window对象。

如果我想要把this的指向更改为box对象,要如何做呢?有三种方法可以办到

  • 调用call()方法,代码如下:
obj.fn.call(box, a, b, c);

其第一个参数为this要指向的对象,其后的参数是一个列表。

  • 调用apply()方法,代码如下:
obj.fn.apply(box, [a, b, c]);

其第一个参数为this要指向的对象,第二个参数是一个由参数组成的数组。

  • 调用bind()方法,代码如下:
obj.fn.bind(box,  a, b, c)();

bind方法与call方法的参数格式类似,不同的是调用bind方法后,会返回一个更改了this指向的新函数,如果要执行,还需要在后边添加()来执行。

---(完)---

相关文章

  • 更改this的指向

    首先说明一下,对于ES6新推出的箭头函数(() => {}),是无法改变this指向的,因为箭头函数中的this在...

  • 更改__proto__的指向(更改原形对象的指向)

    functioncreate(obj1){ functionF(){} F.prototype=obj1 retu...

  • javascript的call和apply以及圣杯模式详解

    简易插件的封装 call概念:可以更改this的指向,传的是字符串 apply概念:可以更改this的指向,传的是...

  • call apply bind

    call apply bind 更改方法里面this的指向 使用call()改变方法里面,this的指向 call...

  • [Toddler's Bottle]-uaf

    程序通过指向vtable的指针+8来调用introduce()函数,所以我们可以通过uaf来更改原本指向vtabl...

  • Dom

    几种获取方式: 操作标签: 更改对象内容的方式就是将变量重新赋值(更改指向)。 这里需要注意的是,TagName和...

  • 箭头函数

    箭头函数么有this arguments如何更改this指向1)call apply bind2)var that...

  • 箭头函数

    1.箭头函数没有this和arguments(this即上级的this) 2.更改this指向 1)call ap...

  • LeetCode 第21题:合并两个有序链表

    1、前言 2、思路 有序链表合并看上去是个简单的题目,但是根据两个有序链表比较大小来更改指针的指向时发现,直接更改...

  • c++ 指针和引用的区别

    1. 指针有const,引用没有const 1)为了限制指针更改指向,引入了const指针(int* const ...

网友评论

      本文标题:更改this的指向

      本文链接:https://www.haomeiwen.com/subject/lonfyktx.html