JavaScript中this详解

this 是 JavaScript 语言的一个关键字。

它是函数运行时,在函数体内部自动生成的一个对象,只能在函数体内部使用。

function test() {
    this.x = 1;
}

上面代码中,函数 test 运行时,内部会自动有一个 this 对象可以使用。

 

一、this 的值是什么

函数的不同使用场合,this 有不同的值。

总的来说,this 就是函数运行时所在的环境对象。

 

 

二、this 的使用场景

1、作为一般函数执行

2、作为对象属性执行

3、作为构造函数执行

4、通过 call、apply、bind 调用

 

 

三、this 的判断

 

1. 作为一般函数执行时,this 指代全局对象

function test(){
    this.x = 1;
    alert(this.x);
}
test();    // 1

 

2. 作为对象属性执行时,this 指代上级对象

function test(){
    alert(this.x);
}
var o = {};
o.x = 1;
o.m = test;
o.m();    // 1

 

3. 作为构造函数调用时,this 指代 new 出的对象

var x = 2;
function test(){
    this.x = 1;
}
var o = new test();
alert(x);        // 2
alert(o.x);        // 1

对于 new 的方式来说,this 被永远绑定在了 o 上面

 

4. call、apply、bind 调用时,this 指代第一个参数

let a = {}
let fn = function () { console.log(this) }
fn.bind().bind(a)()

上述代码中,不管我们给函数 bind 几次,fn 中的 this 永远由第一次 bind 决定,所以结果永远是 window

 

 

四、总结

 

转载于:https://www.cnblogs.com/Leophen/p/11134395.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值