• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

黄文超

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

JavaScript中this指向的总结

JavaScript中this指向的总结

1、传统普通函数

this指向调用者

例如:

function test(){
     console.log(this)
}
test()  // 指向window
function Person() {
	test() {
		console.log(this)
	}
}
let person = new Person()
person.test() // 指向person

2、使用call和apply的普通函数

call和apply传入什么对象就指向什么对象

例如:

var obj = {}
function test() {
	console.log(this)
}
test().call(obj)  //指向obj
test().apply(obj) //指向obj

3、es6的箭头函数

this指向外层作用域,啥意思呢,看如下的例子
let p ={
    name:"黄超",
    test: {
        test1: {
            aa:()=> {
                console.log(this)
            }
        }
    }
}
p.test.test1.aa() // 指向window
let aa ={
    name:"黄超",
    test: {
        test1: {
            test2() {
                let a = 2
                let b = 3;
                (()=>{
                    console.log(this)
                })()
            }
        }
    }
}
aa.test.test1.test2() //指向test1这个对象
let person = {
    name:"hc",
    garde:[12,14,15,16],
    test() {
        let index = -1
        return {
            aa:()=>{
                console.log(this)
            }
        }
    }
}
person.test().aa() // 指向person
因此,简单总结一下就是,箭头函数的this指向的是它作用域外层的哪个对象,怎么理解它的作用域呢,可以简单的理解为离它最近的那个中执行代码的那个作用域

posted on 2021-11-16 20:08  黄文超  阅读(65)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3