关于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)
相关推荐
建军啊10 小时前
php伪协议、代码审计工具和实战
开发语言·php
WYH28710 小时前
为什么在cubeide里勾选了can1,生成的工程里没有can.c?
c语言·开发语言
10 小时前
java关于键盘录入
java·开发语言
马猴烧酒.10 小时前
JAVA后端对象存储( 图片分享平台)详解
java·开发语言·spring·腾讯云
wearegogog12311 小时前
基于MATLAB的D2D仿真场景实现
开发语言·网络·matlab
froginwe1111 小时前
Chart.js 散点图详解
开发语言
独自破碎E11 小时前
【纵向扫描】最长公共前缀
java·开发语言
2601_9495758611 小时前
Flutter for OpenHarmony二手物品置换App实战 - 自定义组件实现
android·javascript·flutter
nuo53420211 小时前
C语言实现类似面向对象的三大特性
c语言·开发语言
object not found11 小时前
基于uniapp开发小程序自定义顶部导航栏状态栏标题栏
前端·javascript·小程序·uni-app