javascript - 在 Javascript 中是否有等同于 .apply 的东西不会改变 this 的值?

标签 javascript function arguments apply

看起来很简单,我想调用一个带有参数数组的函数。当然,我可以说 func.apply(this, ['some', 'arguments']); 但这会改变 func< 中 this 的值。知道如何在不改变它的情况下做到这一点吗?

最佳答案

你不能,因为 this 在 JavaScript 中的工作方式。继续阅读:

按照 "Entering An Execution Context" 进行ECMAScript 规范的一部分:当您调用函数时,this 的值由它剩下的内容(称为激活对象)决定。让我们创建一个名为 steve 的函数,并将他放入一个对象中:

function steve(){}
var obj = { method: steve };

...当我们调用 steve 为 obj.method() 时,他的 thisobj,因为 obj是激活对象。

棘手的情况是当nothing 位于函数调用的左侧时:

steve(); // Who am I ?!

函数调用的左侧没有——实际上,它是null——所以this的值被设置为默认值全局对象(Web 浏览器中的 window,Node.js 中的 global 等)。

因此,实际上,您在每次调用函数时都设置了函数的 this

附言调用 steve.apply(null, []) 等同于调用 steve()

关于javascript - 在 Javascript 中是否有等同于 .apply 的东西不会改变 this 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5247060/

相关文章:

perl - 有没有办法检查参数是否用单引号引起来?

javascript - 这个函数实际上是做什么的?

javascript - 无法在页面离开 "onbeforeunload"事件中获取自定义消息警报

javascript - Node.js 上传 block 并将其保存到文件中

javascript - 需要 jQuery 对话框进行确认并将 Ajax 请求发送到 Controller 操作

c++ - 我不明白为什么这个值在一个函数中计算而不是另一个

javascript - 使用数组值作为变量名

c++ - 指向函数 C++ 的指针数组

javascript - 如何从外部javascript函数返回值

Python,不带参数引发异常