js函数中的this

特殊对象this

一、标准函数中,this引用的是把函数当成方法调用的上下文对象

复制代码
window.color = 'red';

let o={
      color:'blue'    

}

function sayColor(){

        console.log(this.color);

}
sayColor();   // red

o.sayColor=sayColor;

o.sayColor();  //blue

定义在全局上下文中的函数sayColor()引用了this对象。这个this到底引用了哪个对象必须到函数被调用时才能确定。因此这个值在函数执行过程中可能会变。如果在全局上下文中调用sayColor(),结果输出red, 因为this指向window,而this.color相当于window..color.而再把sayColor()赋值给o之后,在调用o.sayColor(); this会指向o,即this.color相当于o.color,所以会显示blue

二、箭头函数中,this引用的是定义箭头函数的上下文

复制代码
window.color = 'red';

let o={
      color:'blue'    

}

function sayColor=()=>{

        console.log(this.color);

}
sayColor();   // red

o.sayColor=sayColor;

o.sayColor();  //red

在对sayColor()的两次调用中,this引用的都是window对象,因为这个箭头函数是在window上下文中定义的

三、在事件回调或定时回调中调用某个函数,this值指向的并非想要的对象。此时可以将回调函数写成箭头函数就可以解决问题

复制代码
function king(){
      this.royaltyName='henry';

     setTimeout(
       ()=>{
               console.log(this.royaltyName,1000);
      })
}

function queen(){
      this.royaltyName='elizabeth';

     setTimeout(
       function(){
              console.log(this.royaltyName,1000);
      })
}
new King();// henry
new Queen();//undefined

因为箭头函数中的this会保留定义该函数时的上下文

相关推荐
xkxnq1 天前
第二阶段:Vue 组件化开发(第 16天)
前端·javascript·vue.js
Van_Moonlight1 天前
RN for OpenHarmony 实战 TodoList 项目:空状态占位图
javascript·开源·harmonyos
xkxnq1 天前
第一阶段:Vue 基础入门(第 15天)
前端·javascript·vue.js
BBBBBAAAAAi1 天前
Claude Code安装记录
开发语言·前端·javascript
源码获取_wx:Fegn08951 天前
基于 vue智慧养老院系统
开发语言·前端·javascript·vue.js·spring boot·后端·课程设计
Jing_Rainbow1 天前
【 前端三剑客-37 /Lesson61(2025-12-09)】JavaScript 内存机制与执行原理详解🧠
前端·javascript·程序员
UIUV1 天前
模块化CSS学习笔记:从作用域问题到实战解决方案
前端·javascript·react.js
Kakarotto1 天前
使用ThreeJS绘制东方明珠塔模型
前端·javascript·vue.js
donecoding1 天前
TypeScript `satisfies` 的核心价值:两个例子讲清楚
前端·javascript
Van_Moonlight1 天前
RN for OpenHarmony 实战 TodoList 项目:顶部导航栏
javascript·开源·harmonyos