javascript - Node.js 和浏览器中函数上下文(this)的区别

标签 javascript node.js this

我知道“this”在浏览器上下文中如何工作,以及它的值在不同场景中如何变化,例如使用箭头函数时如何调用该函数。

我在 Node js(更具体地说是express js)的不同场景中打印了“this”,它包含更多数据 - 包括路径名等

我的问题是:
1.关于“this”的规则与node.js完全相同吗?
2. 谁能解释一下node.js的“this”对象属性或者给我指点一篇简单的文章。

谢谢!

最佳答案

浏览器中的 this 与 Node.js 中没有不同的规则。这些规则是由 ECMAScript 标准设置的,浏览器的 Javascript 实现和 Node.js 中的 Javascript 实现都遵循相同的 ECMAScript 标准。

您可能看到的是在某些特定上下文中 this 的“默认”值。在浏览器中,您可能正在查看 this 的默认值,它可能是 window 对象。在 Node.js 中,如果您看到文件名,则可能会将模块句柄视为 thisglobal 对象的默认值。

为了更具体地帮助您,我们需要查看您在每个环境中检查 this 值的位置的代码,并了解您是否在严格模式下运行。

在大多数情况下,this 不仅仅与默认值一起使用,而是与 this 值设置为的特定对象一起使用。例如,如果您调用类似以下内容:

obj.method();

然后,在method的实现中,Javascript解释器会将this的值设置为obj。这是 Javascript 面向对象本质的一部分。

关于javascript - Node.js 和浏览器中函数上下文(this)的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45386195/

相关文章:

javascript - 在原型(prototype)中保留 'this' 上下文

A 中的 JavaScript : when B inherits from A, 回调看不到 B

javascript - ngDialog 无法与 ng-click 一起使用

javascript - Plotly Js Choropleth Iso2 而不是 Iso3

html - Node 拒绝应用样式,因为它的 MIME 类型 ('text/html' ) 不是受支持的样式表 MIME

node.js - NSSM 未启动简单服务

javascript - HTML5 自动滚动到下一部分

javascript - JQuery $(window).focusout 问题

node.js - Sequelize .save() 在实例上不起作用

javascript - 从其他函数访问 "this"类型 JavaScript 变量