gpt4 book ai didi

javascript - 使用 goog.bind 和 goog.net.Xhrio.send 了解 "this"上下文

转载 作者:数据小太阳 更新时间:2023-10-29 05:06:26 24 4
gpt4 key购买 nike

我对调用以下代码时发生的情况感到有点困惑:

goog.net.XhrIo.send("/welcome", goog.bind(this.handleWelcome, this));

我有一个带有这个签名的函数:

myproject.MyClass.prototype.handleWelcome = function(response)

在绑定(bind)之前,handleWelcome 的上下文无法访问我的 Javascript 类 myproject.MyClass 的实例字段(这是可以理解的)。关注信息here ,我现在有了类实例的上下文。一切都很好。

在我进行更改之前,“this”的上下文是什么?

请原谅我使用的任何非 Javascript 习语——我对 Java 更熟悉,并且可能使用了术语的大杂烩。

编辑

最初我对传递给回调的参数有一些疑问(在本例中是目标类型为 goog.net.Xhrio 的事件),但主要问题是关于此和绑定(bind)的,所以我删除了切向 q。

最佳答案

goog.bind 相当于 function.prototype.bind ,但第一个参数是要绑定(bind)的函数,第二个参数是应该绑定(bind)的“this”值,任何剩余参数都绑定(bind)到函数形式参数。

JavaScript 具有一流的函数,但它们并没有继承绑定(bind)到“this”值,因此除非您绑定(bind)它,否则该值取决于它的调用方式:

var x = { f : handler };
x.f(); // handler is called with "x" as the this value.
handler(); // unspecified this

传统上,如果“this”值未指定、未定义或为 null,则通常将其强制转换为全局 this、“window”。但是,如果您在 EcmaScript 5 严格模式下运行,则该值保持不变(未指定为“未定义”)。

关于javascript - 使用 goog.bind 和 goog.net.Xhrio.send 了解 "this"上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8528159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com