JavaScript this简明笔记

本文解析了JavaScript中this关键字的工作原理及绑定规则,包括默认绑定、new绑定、call/apply绑定等,并介绍了执行上下文的概念。

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

动态绑定

  • JavaScript的this并不“指向自身”。

  • this是在运行时候进行绑定的,,并不是编写的时候绑定的。

  • this指向执行上下文,何为执行上下文,我的理解是函数在“哪里”执行的,这个记录会包含函数在哪里会被调用(调用栈),函数的调用方式,传入参数等信息。this就是这个记录的一个属性。最常见的执行上下文就是window,如

var a=2;
function foo(){
    alert(this.a);    //2
}
foo();

很明显,foo函数在window这个“环境”下执行,所以this指向了window。(但在严格模式下,this不默认指向window,所以代码弹出undefined)

function foo(){
    alert(this.a);
}
var obj={
    a:2,
    foo:foo
}
obj.foo();           //2

函数foo在obj的环境下执行,this默认绑定到obj上。
以上两种都属于默认绑定。

JavaScript中可以控制this的绑定

  • js中有call()和apply()可以显性的传入要绑定的对象

var obj={
    a:10
}
function foo(){
    alert(this.a);           
}
foo.call(obj);             // 10
  •  new绑定

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

使用new来调用foo()时。我们会构造一个新对象并把它绑定到foo()调用中的this上。

this四条绑定规则的优先级

  1. 优先级最高的是new绑定,new中调用函数,this绑定到新创建的对象中。

  2. 其次的是call,apply中显性传入要绑定的对象。

  3. 函数是否在某个上下对象中调用,如果是,this绑定的是上下文对象

  4. 如果都不是,函数在全局对象执行,则绑定到全局对象中,在严格模式下,就绑定到undefined。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值