
js 中的 this
发布日期:2021-05-08 00:13:22
浏览次数:15
分类:原创文章
本文共 1623 字,大约阅读时间需要 5 分钟。
最近对于 js 的 this
有些困惑.
说下目前, 我理解的一些场景的 this
的具体表示含义
- 在函数外,
this
总是表示window
对象 - 在函数内,
this
与调用者有关 addEventListener
的回调函数,this
表示当前触发事件的元素- 内联事件, 例如元素的
onclick
属性, 如果this
作为参数, 表示当前触发事件的元素, 如果 this 在函数内, 那么表示的是对象 (例如window
对象), 而不是触发事件元素
<button onclick="foo1()">按钮 1</button><!--内联事件, this 作为参数表示当前元素, this 如果在函数里使用, 表示调用者对象, 例如 window 对象--><button onclick="foo2(this)">按钮 2</button><button id="btn3">按钮 3</button><script> /* https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/this 在函数外, this == windows 函数内: this 与函数被调用方式有关 addEventListener 回调函数的 this 表示触发事件的元素 内联事件 (例如 onclick) 如果 this 作为参数, 那么表示触发事件的元素 如果 this 在函数内, 那么表示全局对象或者自定义对象, 而不是触发事件的元素 类中 this 表示当前实例 */ // 在函数外, this == windows console.log(`this == window: ${ this == window}`); this.b = '你好鸭' console.log(`window.b: ${ this.b}`) // window 永远与 globalThis 相等 console.log(`window == globalThis: ${ window == globalThis}`) function foo1() { // 这里的 this 表示 window // 如果是严格模式, 那么是 undefined, 而不是 window // "use strict"; console.log(`foo1() = ${ this}`) return this } function foo2(dom) { // 这里的 this 表示 window // 如果是严格模式, 那么是 undefined, 而不是 window // "use strict"; console.log(`foo2() = ${ dom}`) return this } console.log(`foo1() == window: ${ foo1() == window}`); // addEventListener 回调函数的 this 表示当前触发元素 document.querySelector('#btn3').addEventListener('click', function () { console.log(`#btn3 this: ${ this}`) });</script>
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月08日 23时43分09秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
开源项目在闲鱼、b 站上被倒卖?这是什么骚操作?
2019-03-06
Vue3发布半年我不学,摸鱼爽歪歪,哎~就是玩儿
2019-03-06
《实战java高并发程序设计》源码整理及读书笔记
2019-03-06
Java开源博客My-Blog(SpringBoot+Docker)系列文章
2019-03-06
程序员视角:鹿晗公布恋情是如何把微博搞炸的?
2019-03-06
【JavaScript】动态原型模式创建对象 ||为何不能用字面量创建原型对象?
2019-03-06
Linux应用-线程操作
2019-03-06
多态体验,和探索爷爷类指针的多态性
2019-03-06
系统编程-进程间通信-无名管道
2019-03-06
记2020年初对SimpleGUI源码的阅读成果
2019-03-06
C语言实现面向对象方法学的GLib、GObject-初体验
2019-03-06
系统编程-进程-ps命令、进程调度、优先级翻转、进程状态
2019-03-06
为什么我觉得需要熟悉vim使用,难道仅仅是为了耍酷?
2019-03-06
一个支持高网络吞吐量、基于机器性能评分的TCP负载均衡器gobalan
2019-03-06
HDOJ2017_字符串统计
2019-03-06
高等软工第二次作业《需求分析阶段总结》
2019-03-06
404 Note Found 团队会议纪要
2019-03-06
CentOS安装Docker-ce并配置国内镜像
2019-03-06