js中的this指针的指向及更换方法

本文详细介绍了JavaScript中的关键字this,包括它的定义、使用方法和如何改变其指向。this通常被称为this指针,它始终指向最后调用它的对象。在不同场景下,如全局调用、对象方法调用和构造函数中,this的指向各有特点。通过new关键字、bind、call和apply可以改变this的指向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

this是什么

this是javascript的一个关键字
this是一个在函数体内部自动生成的一个对象,且只能在函数体内部使用

this的使用方法

this经常被大家伙叫成this指针,而也就是这个称呼,体现出了它的作用,指向什么东西,指向某一项数据

this指针的指向一直遵循一个原则:

this永远指向的是最后调用它的对象

说完this的指向,后面就是它所带的值,this的值并不是一个固定的值,它有着不同的值

接下来,我们就可以来看一下this的用法

  • 第一类 ——纯粹的函数调用
let x=13;
// 有this出现的函数不要用箭头函数
// 声明函数
function abb()
{
    this.x=18,
    console.log(this.x)
}
// 执行函数
abb();

在这里的this,它的作用是全局调用,因此它指向的就是全局对象x


  • 第二类——作为对象函数调用

函数并不都是独立的,它也可以寻找一个对象当自己的保护壳
当函数作为某个对象的方法来调用时
这时的this就指向它的上级对象

function text ()
    {
        this.name="bu520zhoujielun"
        console.log(this.name)
    }
let y=
{
    name:"520zhoujielun",
    you:text

}
// 因为函数还没有执行,因此我们要先将函数执行
y.you();
// 输出结果为:bu520zhoujielun

在对象内部,方法调用也有着其他情况

  • this没有被上级对象调用时,则this指向时windown

  • 当一个函数被多个对象所包括时,即使这个函数是被最外层的对象服务,但this依然指向上一级对象

let text =
{
    nao:function()
    {
        console.log(this.a)
    }
}
let z=
{
    a:"520zhoujielun",
    you:text
}
z.text.nao();
// 输出结果为undefind

在这串代码中,虽然函数text中没有this指针要的a,但它依然会以函数text为自己的指向,并不会因为上上级对象有个a,就屁巅屁颠跑了


  • 第三类——构造函数使用
    所谓构造函数,便是可以通过这个函数创造一个新的函数
let a=3;
function text ()
    {
        this.a=13
        console.log(this.a)
    }
var b =new text();
console.log(b);

new关键字就像是一个复制粘贴,将原函数中的内容全部复制过来
同时也可以改变this指针的指向,使他指向新的函数

this指针的方向如何改变

上面虽然说着this指针,不会轻易更换自己的对象,但还是有可以让它低头的方法的
那我们除了new关键字,还可以依靠其他关键字来改变this指针的方向

三兄贵:

  • bind 只改变方向,但并不执行
  • call 改变方向的同时执行
  • apply 改变方向的同时执行

三个用法格式都是一样的,我就拿call来举例吧

var text =function()
    {
        this.a=13
        console.log(this.a)
    }
// 老对象
let z=
{
    a:"520zhoujielun",
    you:text
}
// 新对象
let nihao=
{
    c:13,
    d:15
}
text.call(nihao,"c");
z.text();
// 输出结果为13

基本格式:
call(新的对象,对象里的属性)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值