javascript上下文this

本文详细解析了JavaScript中this关键字的四种调用方式及其指向规则,包括作为函数、方法、构造函数调用及通过call和apply调用的情况。此外还探讨了箭头函数中的this行为以及如何使用bind方法来绑定特定的this值。

js的四种调用方式:

一 作为函数的调用:

在严格模式下this,undefined,在非严格模式下指向全局window对象。

二 作为方法调用:

this通常指向调用的对象

三 作为构造函数的调用:

this指向新创建的对象

四 通过call,apply调用:

this指向call或者apply的第一个参数

箭头函数没有单独的this

所有函数均可使用bind方法,创建函数,并且绑定到bind方法传入的参数上,被绑定的函数与原始函数具有一致的行为。

    let obj1 = {
        whoAMi: function() {
            return this;
        }
    }
    let obj2 = {
        whoAMi: obj1.whoAMi
    }
    let iden = obj2.whoAMi;

    console.log(obj1.whoAMi());//obj1
    console.log(obj2.whoAMi());//obj2
    iden();//windows,方法调用,(strict undefined)
    obj1.whoAMi.call(obj2);//obj2

    function Fn() {
        this.whoAMi = () => {this;}
    }
    let obj1 = new Fn();
    let obj2 = {
        whoAMi: obj1.whoAMi
    } 

    obj1.whoAMi();//obj1
    obj2.whoAMi();//obj1,由于obj1是构造函数,this代表调用者

    function Fn() {
        this.whoAMi = function() {
            return this;
        }.bind(this);
    }

    let obj1 = new Fn();
    let obj2 = {
        whoAMi: obj1.whoAmi
    };

    obj1.whoAmi();//obj1
    obj2.whoAMi();//obj1

转载于:https://www.cnblogs.com/intelwisd/p/9080355.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值