This指向问题

本文详细介绍了JavaScript中this的四种情况:基础用法、箭头函数特性、改变this指向的方法(call、apply、bind)以及构造函数中的this。通过实例展示了this如何在不同场景下指向不同的对象,帮助读者深入理解JavaScript的this概念。

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

1.基础this

// 如果一个标准函数,非箭头函数
    // 作为某个对象的方法被调用时,
    // 这个this指向的是调用函数的对象
    function print() {
        console.log(this);
    }
    let obj = {
        name: '张三'
    }
    obj.print = print;
    obj.print()//{name:'张三',print:f}
    //此时this指向obj对象,函数被哪个对象调用了,就指向哪个对象

    let obj2={
        age:20
    }
    obj2.print=print;
    obj2.print()//{age:20,print:f}

 

2.进阶箭头函数

// 在全局环境下定义的函数,this指的是window
    let print=()=>{
        console.log(this);
    }
    let a={
        number:1
    }
    a.print=print;
    a.print()//window

但是箭头函数的this不一定全都指向window而是指向调用这个函数对象的外层对象 

3.改变this指向

// 强行改变this指向
    function print(){
        console.log(this);
    }
    let obj={
        number:1
    }
    obj.print=print;
    obj.print()//{number:1,print:f}
    let obj2={
        Boolean:true
    }
    obj.print.call(obj2)//{Boolean:true}
    obj.print.apply(obj2)//{Boolean:true}
    obj.print.bind(obj2)()//{Boolean:true}

4.构造函数的this

指向实例对象

 function Person(name){
        this.name=name
        console.log(this);
    }
    let print=new Person('张三')//{name:'张三'}
    console.log(print);//{name:'张三'}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值