javascript中this的用法

本文详细介绍了JavaScript中this关键字的四种绑定方式:默认绑定、隐式绑定、显式绑定及new绑定,并通过具体示例展示了每种绑定方式下this对象的变化。

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

在javascript中,this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象。不过,匿名函数的执行环境具有全局性,因此其this对象通常指向window。

下面来解释一下this绑定的四种情况:

1、默认绑定

默认绑定全局变量

function fn() {
    console.log( this.a );
}
var a = 2;
fn(); 
// 2 -- fn单独调用,this引用window

2、隐式绑定

this引用的是函数据以执行的环境对象

function fn() {
    console.log( this.a );
}
var obj = {
    a: 2,
    fn: fn
};
obj.fn(); 
// 2 -- this引用obj。

3、显式绑定

apply()、call()和bind()在特定的作用域中调用函数,实际上等于设置函数体内this对象的值

 function fn() {
     console.log( this.a );
 }
 var obj = {
     a: 2
 };
 fn.call( obj );
 // 2

apply()和call()。这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值。二者的作用相同,区别仅在于接收参数的不同。对于call()方法而言,第一个参数是this值没有变化,传递给函数的参数必须逐个列出来,apply()方法第二个参数是一个参数数组。

bind()。这个方法会创建一个函数的实例,其this值会被绑定到传给bind()函数的值。

4、new绑定

如果是一个构造函数,那么用new来调用,那么绑定的将是新创建的对象

function fn(a) {
    this.a = a;
}
var bar = new fn( 2 );
console.log( bar.a );
// 2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值