关于JS中的this指向问题

全局代码中调用this

全局代码中调用this,this都指向window对象,如果是nodejs 中this指向global

方法内部调用this

在方法内部调用this并不能马上获取this的指向,具体要看当前方法是如何调用的

|---------|------------------------------------------|----------------|
| 调用方式 | 调用示例 | this指向 |
| 通过new调用 | const obj = new Method() | this 指向obj |
| 直接调用 | function obj() { console.log(this) } | this指向window |
| 通过对象调用 | obj.fun = function() {console.log(this)} | this指向调用对象 obj |
| 通过call | fun.call(this, ...args) | 用户手动设置 |
| 通过apply | fun.apply(this, [...args]) | 用户手动设置 |
[ ]

调用示例:👇

javascript 复制代码
const User = function() {
    console.log(this) // 指向 User {}
}
const user = new User()
javascript 复制代码
function user() {
    console.log(this) // 指向 window
}
user()
javascript 复制代码
const user = {
    name: '小妹',
    age: 18,
    sayHello: function() {
        console.log(this) // 指向user 
    }
}

user.hello()
javascript 复制代码
const user = {
    name: '小妹',
    age: 18,
    sayHello: function() {
        console.log(this) // 指向window
    }
}

user.hello.call(this)
user.hello.apply(this)
相关推荐
xlq223226 分钟前
46.线程池
linux·开发语言
LF男男8 分钟前
Action- C# 内置的委托类型
java·开发语言·c#
记录无知岁月9 分钟前
【C/C++】头文件包含问题分析
c语言·开发语言·c++
神仙别闹18 分钟前
基于Python实现(控制台)个人信息系统
开发语言·python
HoneyMoose24 分钟前
Discourse 更加依赖 tag 的扁平化管理
开发语言
Hello eveybody29 分钟前
介绍最大公因数和最小公约数(Python)
开发语言·python
谭欣辰29 分钟前
C++ 堆 的基础与 二叉堆详解
开发语言·c++
Ulyanov34 分钟前
《PySide6 GUI开发指南:QML核心与实践》 第十篇:综合实战——构建完整的跨平台个人管理应用
开发语言·python·qt·ui·交互·qml·雷达电子战系统仿真
ian4u35 分钟前
车载 Android C++ 完整技能路线:从基础到进阶
android·开发语言·c++
lly20240636 分钟前
JSP 过滤器
开发语言