JS学习---this

本文详细阐述了JavaScript中关键字this的指向规则,包括全局作用域、局部作用域(普通函数、对象函数、事件函数、定时器、构造函数、箭头函数)、严格模式以及匿名函数的情况。同时,介绍了三种改变this指向的方法:call、apply和bind,分别解析了它们的语法、特点和应用场景。
摘要由CSDN通过智能技术生成

this是一个关键字,在作用域内使用的关键字,它不代表一个准确的内容,它是根据上下文代码使用环境随时变化的。

一,this的指向

全局作用域:
                   this指向window

局部作用域:

                   普通函数:this指向window

                   对象函数:this指向对象(谁调用指向谁)

                   事件函数:this指向事件源(绑定事件的元素)

                   定时器:this指向window

                   构造函数:this指向实例化的对象

                   箭头函数:this指向继承父级this指向(箭头函数本身没有this)

                   在严格模式下:this指向undefined

                   匿名函数:this指向window

                   静态模式:this指向类

二,改变this的指向

1,call()

语法:

函数.call(this的指向,传递的参数)
var name = 20
function fn(a,b,c,d) {
    var name = 10
    console.log(a,b,c,d);
    console.log(this);
}
var obj = {
    name: 30
}
// fn(1)//1 20
fn.call(obj,100,1,2,3)

特点:会立即调用函数

2,apply()

语法:

函数.apply(this的指向,[参数])
var name = 20
function fn(a,b,c,d) {
    var name = 10
    console.log(a,b,c,d);
    console.log(this);
}
var obj = {
    name: 30
}
fn.apply(obj,[1,2,3,4])

特点:会立即调用函数,改变函数传参的方式。

3,bind()

语法:

函数.bind(this的指向,参数)
var name = 20
function fn(a,b,c,d) {
var name = 10
console.log(a,b,c,d);
console.log(this);
}
var obj = {
name: 30
}
var a=fn.bind(obj,1,2,3,3)
a()

特点:不会立即调用函数,它会改变不需要立即调用的函数中this指向,会返回一个新的函数,返回的函数中的this指向是被锁定的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值