javascript - Javascript 中一个简单的 this 上下文更改示例

标签 javascript

我是 JS 的新手,并且已经阅读了很多关于 this 内容更改的怪癖行为,所以我做了一个最简单的例子:

HTML

<button>button1</button>

JavaScript

var button1, getText

button1 = document.getElementsByTagName('button')[0]

getText = function(){alert(this.textContent)}

button1.addEventListener('click', getText)

http://jsfiddle.net/e95ME/

但我看不到 this 的上下文发生了变化,因为代码有效。任何人都可以更改此代码或给出另一个简单示例来显示 this 的内容更改的古怪行为?

最佳答案

var button1, getText

button1 = document.getElementsByTagName('button')[0]

getText = function(){alert(this.textContent)} // called in context of `button1`

button1.addEventListener('click', getText)

getText(); // called in context of `window`

当窗口加载时,它会说 undefined,因为没有属性 window.textContent。当您单击按钮时,它应该显示 button1,因为它是在按钮的上下文中调用的。

关于javascript - Javascript 中一个简单的 this 上下文更改示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14845618/

相关文章:

javascript - 在 Hangman TypeScript 游戏结束时一次显示一个下划线

javascript - 在使用 requireJs 调用的方法中使用 Node require

javascript - 保留具有相同名称的多个复选框的复选框状态

javascript - 将动态创建的元素的值存储到数据库 PHP MySql

javascript - AngularJS 如何编译指令?

javascript - Node.js 中对路由的两次调用是否彼此独立? (在事件循环和异步数据库访问的上下文中)

javascript - 谷歌地图 : setCenter and panTo not working

javascript - 如何在 javascript 中减慢 spritesheet 动画的速度?

javascript - onchange 函数动态更新的问题

javascript - 如何在二维javascript数组中设置一个值