js中this

this

一:在普通函数中的this:window

在普通函数中的this总是代表它的直接调用者,在默认情况下,this指的是window

function fn(){
   alert(this.username);
}
fn();

二:方法中的this

var isObject = {
    a: 'inner object',
    innerx: function() {
        return this.a;
    }
}
console.log('方法里的this指向:', isObject.innerx());

由上面代码可以看出,因为对象调用了其内部方法innerFunction(),所以此时this指向使用它时所在的对象,即isObject对象。

三:箭头函数中的this

箭头函数内部并没有绑定this的机制,所以this的指向是固定的,即指向当前定义时所在的对象

var thisjs = {
        a: 'hhh',
        functions: () => {
            console.log("对象:",this);
        }
    }
thisjs.functions();
//输出结果:对象:Window {postMessage: , blur: , focus: , close: , parent: Window, …}

同样是对象方法,箭头函数里的this指向的是window对象。

再来看一个例子:

var thisjs= {
        a: 'hhh',
        functions: () => {
            this.a = 0
            console.log("结果:",this.a);
        }
    }
thisjs.functions();
//输出结果:结果:0

此时,在isObject对象functions方法内部定义了一个属性a,它属于this全局对象,所以输出结果为0。

四:call,apply和bind中this指向的是函数call的第一个参数

apply 、 call 、 bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文(函数的每次调用都会拥有一个特殊值——本次调用的上下文(context)——这就是 this 关键字的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值