【JavaScript】函数内的this指向谁

首先声明,this并不需要’查找’这一个过程,this是在函数调用的时候就确定的。

function foo(){}

分别就函数的4中调用形式如何确定函数内的this.
1.Function Invocation Pattern
诸如’foo()’这样直接调用的形式,这种模式下,foo函数体中的this永远为Global对象,在浏览器中就是Window对象。

2.Method Invocation Pattern
诸如’foo.bar()’这样的形式,函数作为属性来调用,必然会有’.’或者’[]’这样的符号出现,那么函数中的this就是’.’或者’[‘符号前的对象,foo.bar()则bar函数中的this就是foo。

3.Constructor Pattern
诸如’new foo()’这种形式,带有new关键字出现。这种模式下,foo函数中的this永远指向new foo()返回的对象。

4.Apply Pattern
诸如’foo.call(ThisObject)’和’foo.apply(ThisObject)’这种模式,使用了函数内置的call和apply函数。这种模式中函数内部的this指向call和apply函数的第一个参数.如果传入的ThisObject是null或者undefined则函数的this指向global。

所以确定函数是哪种调用模式,那么确定函数内的this就很easy了.

另外一篇对this讲解的很透彻:

点我

this

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值