当前位置: 首页 > news >正文

015-016 类中方法中的this,解决类中this指向问题

类中方法中的this

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script type="text/javascript"> class Person { constructor(name, age) { this.name = name this.age = age } study() { //study方法放在了哪里? —— 类的原型对象上,供实例使用 //通过Person实例调用study时,study中的this就是Person实例 console.log(this); } } const p1 = new Person('tom', 18) p1.study() //通过实例调用study方法 const x = p1.study x() //undefined </script> </body> </html>

解决类中this指向问题

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <div id="test"></div> <script type="text/javascript" src="../js/react.development.js"></script> <script type="text/javascript" src="../js/react-dom.development.js"></script> <script type="text/javascript" src="../js/babel.min.js"></script> <script type="text/babel"> //1.创建组件 class Weather extends React.Component { constructor(props) { super(props) //initialize state this.state = { isHot: true } //解决changeWeather中this指向问题 this.changeWeather = this.changeWeather.bind(this) //bind()返回了一个新函数并且把this修改为括号中的内容 } render() { //read state const { isHot } = this.state //解构赋值 return <h2 onClick={this.changeWeather}>今天天气很{isHot ? '炎热' : '凉爽'}</h2> } changeWeather() { //changeWeather放在哪里? —— Weather的原型对象上,供实例使用 //由于changeWeather是作为onClick的回调,所以不是通过实例调用的,是直接调用 //类中的方法默认开启了局部的严格模式,所以changeWeather中的this为undefined console.log(this) } } //2.渲染组件到页面 ReactDOM.render(<Weather />, document.getElementById('test')) </script> </body> </html>
http://www.jsqmd.com/news/695835/

相关文章:

  • 互联网大厂 Java 求职面试:音视频场景中的技术问答
  • Keil ”品“(Manage Project Items)功能介绍
  • PyTorch实现Transformer英法机器翻译系统
  • 华为交换机实战:从办公室网络隔离到服务器互通,一套配置搞定Access、Trunk、Hybrid混合组网
  • Go语言高性能HTTP路由器Chipper:零依赖轻量级路由解决方案
  • C++:模板精讲
  • Aetina AIE-CP1A-A1边缘AI系统解析与工业应用
  • CUDA 13.0与Jetson Thor平台:边缘计算新纪元
  • YOLOv8炼丹笔记:用ECA注意力模块提升小目标检测精度(附三种YAML配置)
  • Pytest及相关测试工具实战指南
  • ChatGPT Images 2.0 技术升级与全场景落地实操指南
  • 深度学习实现图像自动描述生成的技术解析
  • Linux kernel 5.10+下C++ MCP网关偶发丢包率突增300%?eBPF trace发现glibc malloc隐式锁争用黑洞
  • 云服务器配置远程桌面
  • AI 多智能体 Agent+Unity 虚拟仿真:数字孪生 3D 场景智能调度教程
  • 神经形态硬件在强化学习机器人控制中的低功耗实践
  • 我们有最牛的数据系统,却输给了一个“没人回复的推送”
  • DeepEar开源对话系统:从语音识别到多轮对话的完整实践指南
  • VSCode实时协作优化进入深水区:E2E加密延迟、光标冲突消解算法、离线变更合并队列——这3个底层机制你必须今天就掌握
  • Hyperf 开箱即用的多语言、多币种、多时区、国际支付、全球物流PHP标准化组件
  • 【进程间通信】————匿名管道、模拟实现进程池
  • NREL风速数据API参数详解:从wkt坐标到interval间隔,新手避坑指南
  • 机器学习模型方差问题分析与实战解决方案
  • 嵌入式——认识电子元器件——三极管系列
  • 以线性代数的行列式理解数学应用备忘
  • 从 LangGraph 死循环到 Skill 驱动:我把 Text2SQL 升级成了SKILL模式
  • 2026宝鸡高端装修设计实测:宝鸡市,宝鸡,渭滨宝鸡装修(核心词),宝鸡靠谱家装公司,排行一览! - 优质品牌商家
  • 2026年比较好的硅酸钙板建材专业公司推荐 - 品牌宣传支持者
  • 差分放大器在高速信号链中的关键作用与设计实践
  • keil未指定 PY32F0 具体芯片型号导致编译报错及无法烧录问题